{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据分析实例\n",
    "\n",
    "既然我们已经到达了本书主要章节的末尾，我们将了解许多实际数据集。对于每个数据集，我们将使用本书中介绍的技术从原始数据中提取含义。演示的技术可以应用于包括您自己在内的所有其他数据集。本章包含各种示例数据集，您可以使用本书中的工具进行练习。\n",
    "\n",
    "示例数据集可在该书的随附GitHub存储库中找到。\n",
    "\n",
    "## 14.1 来自Bitly的1.USA.gov数据\n",
    "\n",
    "2011年，URL缩短服务Bitly与美国政府网站USA.gov合作，提供了从缩短了以.gov或.mil结尾的链接的用户那里收集的匿名数据的提要。在2011年，实时供稿以及每小时快照可作为可下载的文本文件提供。在撰写本文时（2017年），该服务已关闭，但我们为本书的示例保留了一个数据文件。\n",
    "\n",
    "对于每小时快照，每个文件中的每一行都包含一种称为JSON的Web数据的通用形式，代表JSON对象表示法。例如，如果我们仅读取文件的第一行，则可能会看到类似以下内容的内容："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "path = 'datasets/bitly_usagov/example.txt'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{ \"a\": \"Mozilla\\\\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\\\\/535.11 (KHTML, like Gecko) Chrome\\\\/17.0.963.78 Safari\\\\/535.11\", \"c\": \"US\", \"nk\": 1, \"tz\": \"America\\\\/New_York\", \"gr\": \"MA\", \"g\": \"A6qOVH\", \"h\": \"wfLQtf\", \"l\": \"orofrog\", \"al\": \"en-US,en;q=0.8\", \"hh\": \"1.usa.gov\", \"r\": \"http:\\\\/\\\\/www.facebook.com\\\\/l\\\\/7AQEFzjSi\\\\/1.usa.gov\\\\/wfLQtf\", \"u\": \"http:\\\\/\\\\/www.ncbi.nlm.nih.gov\\\\/pubmed\\\\/22415991\", \"t\": 1331923247, \"hc\": 1331822918, \"cy\": \"Danvers\", \"ll\": [ 42.576698, -70.954903 ] }\\n'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "open(path).readline()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Python具有内置库和第三方库，用于将JSON字符串转换为Python字典对象。在这里，我们将使用在下载的示例文件的每一行上调用的json模块及其加载函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "path = 'datasets/bitly_usagov/example.txt'\n",
    "records = [json.loads(line) for line in open(path)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在生成的对象记录是Python字典的列表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11',\n",
       " 'c': 'US',\n",
       " 'nk': 1,\n",
       " 'tz': 'America/New_York',\n",
       " 'gr': 'MA',\n",
       " 'g': 'A6qOVH',\n",
       " 'h': 'wfLQtf',\n",
       " 'l': 'orofrog',\n",
       " 'al': 'en-US,en;q=0.8',\n",
       " 'hh': '1.usa.gov',\n",
       " 'r': 'http://www.facebook.com/l/7AQEFzjSi/1.usa.gov/wfLQtf',\n",
       " 'u': 'http://www.ncbi.nlm.nih.gov/pubmed/22415991',\n",
       " 't': 1331923247,\n",
       " 'hc': 1331822918,\n",
       " 'cy': 'Danvers',\n",
       " 'll': [42.576698, -70.954903]}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "records[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 在纯Python中计算时区\n",
    "\n",
    "假设我们有兴趣在数据集中找到最经常出现的时区（tz字段）。我们有很多方法可以做到这一点。首先，让我们再次使用列表理解来提取时区列表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'tz'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-5-f3fbbc37f129>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtime_zones\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mrec\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tz'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mrec\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrecords\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-5-f3fbbc37f129>\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtime_zones\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mrec\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tz'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mrec\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrecords\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mKeyError\u001b[0m: 'tz'"
     ]
    }
   ],
   "source": [
    "time_zones = [rec['tz'] for rec in records]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "糟糕！事实证明并非所有记录都具有时区字段。这很容易处理，因为我们可以在列表理解的末尾添加，然后检查rec中的'tz'："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "time_zones = [rec['tz'] for rec in records if 'tz' in rec]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['America/New_York',\n",
       " 'America/Denver',\n",
       " 'America/New_York',\n",
       " 'America/Sao_Paulo',\n",
       " 'America/New_York',\n",
       " 'America/New_York',\n",
       " 'Europe/Warsaw',\n",
       " '',\n",
       " '',\n",
       " '']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "time_zones[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "仅查看前10个时区，就会发现其中一些是未知的（空字符串）。您也可以将其过滤掉，但我暂时将其保留。现在，为了按时区进行计数，我将展示两种方法：较困难的方法（仅使用Python标准库）和较简单的方法（使用pandas）。一种计数方法是在遍历时区时使用字典存储计数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_counts(sequence):\n",
    "    counts = {}\n",
    "    for x in sequence:\n",
    "        if x in counts:\n",
    "            counts[x] += 1\n",
    "        else:\n",
    "            counts[x] = 1\n",
    "    return counts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用Python标准库中的更高级工具，您可以更简单地编写相同的内容："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n",
    "\n",
    "def get_counts2(sequence):\n",
    "    counts = defaultdict(int)  # values will initialize to 0\n",
    "    for x in sequence:\n",
    "        counts[x] += 1\n",
    "    return counts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我将此逻辑放在函数中只是为了使其更可重用。要在时区使用它，只需传递time_zones列表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1251"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts = get_counts(time_zones)\n",
    "counts['America/New_York']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3440"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(time_zones)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果我们想要排名前10位的时区及其计数，我们可以做一些字典杂技："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def top_counts(count_dict, n=10):\n",
    "    value_key_pairs = [(count, tz) for tz, count in count_dict.items()]\n",
    "    value_key_pairs.sort()\n",
    "    return value_key_pairs[-n:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(33, 'America/Sao_Paulo'),\n",
       " (35, 'Europe/Madrid'),\n",
       " (36, 'Pacific/Honolulu'),\n",
       " (37, 'Asia/Tokyo'),\n",
       " (74, 'Europe/London'),\n",
       " (191, 'America/Denver'),\n",
       " (382, 'America/Los_Angeles'),\n",
       " (400, 'America/Chicago'),\n",
       " (521, ''),\n",
       " (1251, 'America/New_York')]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_counts(counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果您搜索Python标准库，则可能会找到collections.Counter类，这使此任务更加容易："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('America/New_York', 1251),\n",
       " ('', 521),\n",
       " ('America/Chicago', 400),\n",
       " ('America/Los_Angeles', 382),\n",
       " ('America/Denver', 191),\n",
       " ('Europe/London', 74),\n",
       " ('Asia/Tokyo', 37),\n",
       " ('Pacific/Honolulu', 36),\n",
       " ('Europe/Madrid', 35),\n",
       " ('America/Sao_Paulo', 33)]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from collections import Counter\n",
    "\n",
    "counts = Counter(time_zones)\n",
    "counts.most_common(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 用pandas计算时区\n",
    "\n",
    "从原始记录集创建DataFrame就像将记录列表传递到pandas.DataFrame一样容易："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 3560 entries, 0 to 3559\n",
      "Data columns (total 18 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   a            3440 non-null   object \n",
      " 1   c            2919 non-null   object \n",
      " 2   nk           3440 non-null   float64\n",
      " 3   tz           3440 non-null   object \n",
      " 4   gr           2919 non-null   object \n",
      " 5   g            3440 non-null   object \n",
      " 6   h            3440 non-null   object \n",
      " 7   l            3440 non-null   object \n",
      " 8   al           3094 non-null   object \n",
      " 9   hh           3440 non-null   object \n",
      " 10  r            3440 non-null   object \n",
      " 11  u            3440 non-null   object \n",
      " 12  t            3440 non-null   float64\n",
      " 13  hc           3440 non-null   float64\n",
      " 14  cy           2919 non-null   object \n",
      " 15  ll           2919 non-null   object \n",
      " 16  _heartbeat_  120 non-null    float64\n",
      " 17  kw           93 non-null     object \n",
      "dtypes: float64(4), object(14)\n",
      "memory usage: 500.8+ KB\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "frame = pd.DataFrame(records)\n",
    "frame.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     America/New_York\n",
       "1       America/Denver\n",
       "2     America/New_York\n",
       "3    America/Sao_Paulo\n",
       "4     America/New_York\n",
       "5     America/New_York\n",
       "6        Europe/Warsaw\n",
       "7                     \n",
       "8                     \n",
       "9                     \n",
       "Name: tz, dtype: object"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['tz'][:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为框架显示的输出是摘要视图，为大型DataFrame对象显示。然后，我们可以对系列使用value_counts方法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "America/New_York             1251\n",
       "                              521\n",
       "America/Chicago               400\n",
       "America/Los_Angeles           382\n",
       "America/Denver                191\n",
       "                             ... \n",
       "America/Montevideo              1\n",
       "America/Argentina/Mendoza       1\n",
       "America/La_Paz                  1\n",
       "Asia/Nicosia                    1\n",
       "Australia/Queensland            1\n",
       "Name: tz, Length: 97, dtype: int64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['tz'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以使用matplotlib可视化此数据。您可以进行一些调整以填充记录中未知和丢失的时区数据的替代值。我们用fillna方法替换缺少的值，并对空字符串使用布尔数组索引："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "America/New_York       1251\n",
       "Unknown                 521\n",
       "America/Chicago         400\n",
       "America/Los_Angeles     382\n",
       "America/Denver          191\n",
       "Missing                 120\n",
       "Europe/London            74\n",
       "Asia/Tokyo               37\n",
       "Pacific/Honolulu         36\n",
       "Europe/Madrid            35\n",
       "Name: tz, dtype: int64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clean_tz = frame['tz'].fillna('Missing')\n",
    "clean_tz[clean_tz == ''] = 'Unknown'\n",
    "tz_counts = clean_tz.value_counts()\n",
    "tz_counts[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "此时，我们可以使用seaborn软件包绘制水平条形图 (有关结果的可视化效果，请参见图14-1)："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
      "  import pandas.util.testing as tm\n"
     ]
    }
   ],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6e1df8690>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "subset = tz_counts[:10]\n",
    "plt.figure(figsize=(10,6))\n",
    "sns.barplot(y=subset.index, x=subset.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "该字段包含有关用于执行URL缩短的浏览器，设备或应用程序的信息："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'GoogleMaps/RochesterNY'"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['a'][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['a'][50]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Mozilla/5.0 (Linux; U; Android 2.2.2; en-us; LG-P9'"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['a'][51][:50]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "解析这些“代理”字符串中的所有有趣信息似乎是一项艰巨的任务。一种可能的策略是拆分字符串中的第一个令牌（大致对应于浏览器功能），并对用户行为进行另一次总结："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0               Mozilla/5.0\n",
       "1    GoogleMaps/RochesterNY\n",
       "2               Mozilla/4.0\n",
       "3               Mozilla/5.0\n",
       "4               Mozilla/5.0\n",
       "dtype: object"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = pd.Series([x.split()[0] for x in frame.a.dropna()])\n",
    "results[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mozilla/5.0                 2594\n",
       "Mozilla/4.0                  601\n",
       "GoogleMaps/RochesterNY       121\n",
       "Opera/9.80                    34\n",
       "TEST_INTERNET_AGENT           24\n",
       "GoogleProducer                21\n",
       "Mozilla/6.0                    5\n",
       "BlackBerry8520/5.0.0.681       4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.value_counts()[:8]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，假设您要将最高时区分解为Windows和非Windows用户。为简单起见，假设如果字符串“ Windows”位于代理字符串中，则用户在Windows上。由于缺少某些座席，因此我们将从数据中排除这些座席："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "cframe = frame[frame.a.notnull()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，我们要计算每行是否为Windows的值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0        Windows\n",
       "1    Not Windows\n",
       "2        Windows\n",
       "3    Not Windows\n",
       "4        Windows\n",
       "Name: os, dtype: object"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "cframe['os'] = np.where(cframe['a'].str.contains('Windows'), 'Windows', 'Not Windows')\n",
    "cframe['os'][:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，您可以按时区列和以下新的操作系统列表对数据进行分组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "by_tz_os = cframe.groupby(['tz', 'os'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "类似于value_counts函数，可以使用大小来计算组计数。然后将结果重新整形为带堆栈的表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>os</th>\n",
       "      <th>Not Windows</th>\n",
       "      <th>Windows</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tz</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <td>245.0</td>\n",
       "      <td>276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Cairo</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Casablanca</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Ceuta</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Johannesburg</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Lusaka</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Anchorage</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Buenos_Aires</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Cordoba</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Mendoza</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "os                              Not Windows  Windows\n",
       "tz                                                  \n",
       "                                      245.0    276.0\n",
       "Africa/Cairo                            0.0      3.0\n",
       "Africa/Casablanca                       0.0      1.0\n",
       "Africa/Ceuta                            0.0      2.0\n",
       "Africa/Johannesburg                     0.0      1.0\n",
       "Africa/Lusaka                           0.0      1.0\n",
       "America/Anchorage                       4.0      1.0\n",
       "America/Argentina/Buenos_Aires          1.0      0.0\n",
       "America/Argentina/Cordoba               0.0      1.0\n",
       "America/Argentina/Mendoza               0.0      1.0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agg_counts = by_tz_os.size().unstack().fillna(0)\n",
    "\n",
    "agg_counts[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后，让我们选择顶部时区。为此，我从agg_counts中的行数构造一个间接索引数组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use to sort in ascending order\n",
    "indexer = agg_counts.sum(1).argsort()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tz\n",
       "                                  24\n",
       "Africa/Cairo                      20\n",
       "Africa/Casablanca                 21\n",
       "Africa/Ceuta                      92\n",
       "Africa/Johannesburg               87\n",
       "Africa/Lusaka                     53\n",
       "America/Anchorage                 54\n",
       "America/Argentina/Buenos_Aires    57\n",
       "America/Argentina/Cordoba         26\n",
       "America/Argentina/Mendoza         55\n",
       "dtype: int64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indexer[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我使用take按该顺序选择行，然后切掉最后10行（最大值）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "count_subset = agg_counts.take(indexer[-10:])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>os</th>\n",
       "      <th>Not Windows</th>\n",
       "      <th>Windows</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tz</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>America/Sao_Paulo</th>\n",
       "      <td>13.0</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Europe/Madrid</th>\n",
       "      <td>16.0</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pacific/Honolulu</th>\n",
       "      <td>0.0</td>\n",
       "      <td>36.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Asia/Tokyo</th>\n",
       "      <td>2.0</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Europe/London</th>\n",
       "      <td>43.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Denver</th>\n",
       "      <td>132.0</td>\n",
       "      <td>59.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Los_Angeles</th>\n",
       "      <td>130.0</td>\n",
       "      <td>252.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Chicago</th>\n",
       "      <td>115.0</td>\n",
       "      <td>285.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <td>245.0</td>\n",
       "      <td>276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/New_York</th>\n",
       "      <td>339.0</td>\n",
       "      <td>912.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "os                   Not Windows  Windows\n",
       "tz                                       \n",
       "America/Sao_Paulo           13.0     20.0\n",
       "Europe/Madrid               16.0     19.0\n",
       "Pacific/Honolulu             0.0     36.0\n",
       "Asia/Tokyo                   2.0     35.0\n",
       "Europe/London               43.0     31.0\n",
       "America/Denver             132.0     59.0\n",
       "America/Los_Angeles        130.0    252.0\n",
       "America/Chicago            115.0    285.0\n",
       "                           245.0    276.0\n",
       "America/New_York           339.0    912.0"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count_subset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pandas有一个称为nlargest的便捷方法，它可以完成相同的操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tz\n",
       "America/New_York       1251.0\n",
       "                        521.0\n",
       "America/Chicago         400.0\n",
       "America/Los_Angeles     382.0\n",
       "America/Denver          191.0\n",
       "Europe/London            74.0\n",
       "Asia/Tokyo               37.0\n",
       "Pacific/Honolulu         36.0\n",
       "Europe/Madrid            35.0\n",
       "America/Sao_Paulo        33.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agg_counts.sum(1).nlargest(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，如前面的代码块所示，可以将其绘制成条形图。通过将额外的参数传递给seaborn的barplot函数，使它成为堆积的条形图（见图14-2）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>os</th>\n",
       "      <th>tz</th>\n",
       "      <th>total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>America/Sao_Paulo</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "      <td>16.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>Pacific/Honolulu</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>Asia/Tokyo</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>Europe/London</td>\n",
       "      <td>43.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>America/Denver</td>\n",
       "      <td>132.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>America/Los_Angeles</td>\n",
       "      <td>130.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>America/Chicago</td>\n",
       "      <td>115.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td></td>\n",
       "      <td>245.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Not Windows</td>\n",
       "      <td>America/New_York</td>\n",
       "      <td>339.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            os                   tz  total\n",
       "0  Not Windows    America/Sao_Paulo   13.0\n",
       "1  Not Windows        Europe/Madrid   16.0\n",
       "2  Not Windows     Pacific/Honolulu    0.0\n",
       "3  Not Windows           Asia/Tokyo    2.0\n",
       "4  Not Windows        Europe/London   43.0\n",
       "5  Not Windows       America/Denver  132.0\n",
       "6  Not Windows  America/Los_Angeles  130.0\n",
       "7  Not Windows      America/Chicago  115.0\n",
       "8  Not Windows                       245.0\n",
       "9  Not Windows     America/New_York  339.0"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count_subset = count_subset.unstack()\n",
    "count_subset.name = 'total'\n",
    "count_subset = count_subset.reset_index()\n",
    "count_subset[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6e2478b50>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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w6XAB5p7/DlwXde5TwCXAL8CbgPW7+P6vwC+1IT0e+jsIZYkSWq99PdoCnUkOYdOQL1uhZ1bZuKYUXXJkVsOqK9fUJMktdGdd97JNttss+KOelH19bkkWVBVU3v3HQoru0NaVR0+2DVIkiRp1Rh2B0Hzpbwr+ji150o8TkySJEkrMBS+oPaSU1VLml9J6/3HoCtJkp4jCR/5yEeWvf7MZz7DySefvNxrLrroIu64447ntT/88MNssskmy35h7dprryUJixd3fi/rkUceYeONN+bZZ5/lxBNP5Cc/+cnzxliecePG8eCDD67UNWuaK7uSJEkDNOVj563W8RacdtgK+6y33np873vf44QTTmDTTTcd0LgXXXQRb3/729l2222f0/6KV7yCP/3TP+XOO+9k2223Zd68eeywww7MmzePgw8+mOuuu46dd96ZddZZpzU/J+zKriRJ0hA2fPhwjjjiCD73uc8979z999/PnnvuycSJE9lzzz154IEHmDdvHhdffDEf+9jHmDRpEnff/dyHW82YMYN58+YBMG/ePI477rjnvJ4+fToAs2fP5rvf/S7QWbE96aSTmDx5MhMmTOCuu+4CYMmSJey9997ssMMOHHnkkXQ/+OCzn/0s48ePZ/z48Zx+eue3w/75n/+ZM888E4DjjjuON73pTQBcccUVHHrooTzzzDPMnj2b8ePHM2HChD7veWUZdiVJkoa4D33oQ3zjG9/gkUceeU77UUcdxWGHHcbChQs55JBDOOaYY5g+fTrveMc7OO2007jlllt4/etf/5xrpk+fvizc3nPPPfz5n/858+fPBzphd8aMGX3WsOmmm3LTTTfxwQ9+kM985jMAnHLKKey6667cfPPNvOMd7+CBBx4AYMGCBcyZM4frr7+e6667ji9/+cvcfPPN7LbbblxzTefnBubPn8+jjz7KU089xdy5c5k5cya33HILv/71r7nttttYtGgR73vfC39aqmFXkiRpiNtwww057LDDlq2K9rj22mt5z3veA8B73/te5s6du8KxelZ27733XsaNG8fIkSOpKh599FEWLFjATjvt1Od1BxxwAABTpkzhvvvuA+Dqq6/m0EMPBeBtb3sbG220EQBz585l//335+Uvfznrr78+BxxwANdccw1TpkxhwYIF/O53v2O99dZj2rRpzJ8/n2uuuYaZM2fyute9jnvu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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,6))\n",
    "sns.barplot(x='total', y='tz', hue='os', data=count_subset)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制该图并不容易看到较小组中Windows用户的相对百分比，因此我们将组百分比归一化为1："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "def norm_total(group):\n",
    "    group['normed_total'] = group.total / group.total.sum()\n",
    "    return group"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = count_subset.groupby('tz').apply(norm_total)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后在图14-3中绘制："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6e2842150>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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z1vWft1eXAF8oLnHnwM3dJ37BHA58EvgDmD9Xq7/c+Bfm5B+H509xJIkSa2Xvj6aQh1JzqMTUG9YZueWGb/FqLr8mK0GuwxJGjS+QU13330322233bI7arXq7XVJMq+qJvfsOxRWdoe0qjpqsGuQJEnSijHsDoLmTXlX9XJqn+X4ODFJkiQtw1B4g9pap6oWNd+S1vPHoCtJkl4kCR/5yEeef/zZz36WU089td9rLr30Uu66666XtD/66KNssskmz3/D2vXXX08SFi7sfF/WkiVL2HjjjXnuuec4+eST+clPfvKSMfozduxYHn744eW6ZlVzZVeSJGmAJn3swpU63rwzjlxmn/XWW4/vfve7nHTSSWy66aYDGvfSSy/l7W9/O9tvv/2L2l/1qlfxx3/8x9x9991sv/32zJkzh5133pk5c+Zw6KGHcsMNN7DbbruxzjrrtObrhF3ZlSRJGsKGDx/O0Ucfzec///mXnHvwwQfZZ599GD9+PPvssw8PPfQQc+bM4bLLLuNjH/sYEyZM4N57X/zhVtOmTWPOnDkAzJkzhw9/+MMvejx16lQAZs6cyXe+8x2gs2J7yimnMHHiRHbccUfuueceABYtWsR+++3HzjvvzDHHHEP3Bx987nOfY9y4cYwbN44zz+x8d9g//dM/cfbZZwPw4Q9/mDe96U0AXHXVVRxxxBE8++yzzJw5k3HjxrHjjjv2es/Ly7ArSZI0xH3oQx/i61//OkuWLHlR+7HHHsuRRx7J/PnzOfzwwzn++OOZOnUq73jHOzjjjDO47bbbeOMb3/iia6ZOnfp8uL3vvvv4sz/7M+bOnQt0wu60adN6rWHTTTfllltu4YMf/CCf/exnATjttNPYY489uPXWW3nHO97BQw89BMC8efOYNWsWN954IzfccANf/vKXufXWW9lzzz257rrO1w3MnTuXxx57jKeffprZs2czffp0brvtNn71q19xxx13sGDBAt73vpf/aamGXUmSpCFuww035Mgjj3x+VXSp66+/nsMOOwyA9773vcyePXuZYy1d2b3//vsZO3YsI0eOpKp47LHHmDdvHrvuumuv173rXe8CYNKkSTzwwAMAXHvttRxxxBEAvO1tb2OjjTYCYPbs2Rx00EG88pWvZP311+dd73oX1113HZMmTWLevHn8/ve/Z7311mPKlCnMnTuX6667junTp/OGN7yB++67j+OOO44rrriCDTfccIWer27u2VWf1t18B8acPHewy5AkScAJJ5zAxIkT+13tTLLMcbbeemsWL17M9773PaZMmQJ0AuysWbPYcsstWX/93r6fqrN3GGDYsGE888wz/c7Z1/c4jBgxgrFjxzJr1iymTp3K+PHj+elPf8q9997LdtttRxJuv/12fvSjH3HOOefwrW99i/PPP3+Z99QfV3YlSZLWABtvvDGHHnooX/nKV55vmzp1KhdddBEAX//619ljjz0A2GCDDfj973/f51hTpkzhrLPOej7sTpkyhTPPPPP5/boDteeee/L1r38dgB/+8IcsXrz4+fZLL72UP/zhDzz++ONccsklTJ8+/flzn/3sZ9lzzz2ZPn06//qv/8qECRNIwsMPP8xzzz3HwQcfzN/93d9xyy23LFc9vTHsSpIkrSE+8pGPvOijvc4++2xmzZrF+PHj+drXvsZZZ50FwHve8x7OOOMMdt5555e8QQ06Wxl++ctfMnly5wvHpkyZwn333bfcYfeUU07h2muvZeLEiVx55ZWMGTMGgIkTJzJz5kx23XVXdtttN4466ih23nlnAKZPn86vf/1rpkyZwqtf/WpGjhz5fBD+1a9+xV577cWECROYOXMmn/70p5f/SerBrwtWnyZPnlxLN6xLkrQ28uuCh6bl+bpgV3YlSZLUWoZdSZIktZZhV5IkSa3lR4+pT3cvXLTSvxZR0uo3kK8jlaS2cmVXkiRJrWXYlSRJUmsZdiVJkoawD3/4w5x55pnPP37LW97CUUcd9fzjj3zkI3zqU5/ikEMOWa5xL7jgAo499tiVVudQ5Z5dSZKkAXro9B1X6nhjTl6wzD5Tp07l29/+NieccALPPfccDz/8ML/73e+ePz9nzhzOPPNM/vqv/3ql1tYWruxKkiQNYdOmTWPOnDkA3HnnnYwbN44NNtiAxYsX89RTT3H33Xez0UYbMW7cOKCzYvuud72L/fffn6233pq/+qu/en6sWbNmsc022/Cnf/qn/OxnP3u+/cEHH2SfffZh/Pjx7LPPPjz00EM8++yzvOENb6CqePTRR1lnnXW49tprgc63oP33f/8311xzDRMmTGDChAnsvPPO/X5F8WBxZVeSJGkIe81rXsPw4cN56KGHmDNnDlOmTOFXv/oV119/PaNHj2b8+PGsu+66L7rmtttu49Zbb2W99dbjT/7kTzjuuOMYPnw4p5xyCvPmzWP06NHsvffez3+F77HHHsuRRx7Jn//5n3P++edz/PHHc+mll7LNNttw1113cf/99zNp0iSuu+46dtttNxYuXMhWW23Fhz/8Yc455xymTZvGY489xsiRIwfjKeqXK7uSJElD3NLV3aVhd8qUKc8/njp16kv677PPPowePZqRI0ey/fbb8+CDD3LjjTey1157sdlmm7Huuuvy7ne/+/n+119/PYcddhgA733ve5k9ezbQWcG99tprufbaaznppJOYPXs2N998M7vsssvzdZ144omcffbZPProowwfPvTWUQ27kiRJQ9zUqVOZM2cOCxYsYNy4cey+++5cf/31zJkzh2nTpr2k/3rrrff88bBhw3jmmWcASDKg+Zb2mz59Otdddx033XQTb33rW3n00Ue5+uqr2XPPPQH4xCc+wXnnnccTTzzB7rvvzj333PNyb3Wla33YTfJsktu6fj4xyPWclOTwJKcmqSRbdZ37cNM2eTnG2yvJ5X2cm5zk7D7OPZBk0+W/A0mStLpNmzaNyy+/nI033phhw4ax8cYb8+ijj3L99dczZcqUAY2x2267cfXVV7No0SKefvppvv3tbz9/burUqVx00UUAfP3rX2ePPfZ4/po5c+awzjrrMHLkSCZMmMC//du/MX36dADuvfdedtxxRz7+8Y8zefJkw+4geaKqJnT9fGagFyZZFWvx+wFXNscLgPd0nTsEuGtlTJJkeFXNrarjV8Z4kiRp8Oy44448/PDD7L777i9qGz16NJtuOrC1q80335xTTz2VKVOmsO+++zJx4sTnz5199tnMmjWL8ePH87WvfY2zzjoL6KwQv+51r3t+3unTp/P73/+eHXfsfCrFmWeeybhx49hpp50YNWoUBxxwwMq65ZUmVTXYNaxSSR6rqvV7aX8AmFxVDzcrqZ+tqr2SnAq8BhgLPAz8BfAlYDLwDHBiVf00yUzgIGA9YEvgG1V1WjP2EcDxwLrAjcD/qapnk2wI/LCqpjXzrAMcUFW7JHkD8AXgFcBHq2puki8BuwCjgO9U1SnN+PsDZzb13QK8oare3kvt5zZjvT3JJsB/AJsBNwH7A5Oq6uG+nrtX/vGWte17Txv4ky1pSPLrgqUVd/fdd7PddtsNdhnqobfXJcm8qnrJb8fXhpXdUT22Mbx7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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,6))\n",
    "sns.barplot(x='normed_total', y='tz', hue='os', data=results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过使用带groupby的变换方法，我们可以更有效地计算归一化和："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = count_subset.groupby('tz')\n",
    "results2 = count_subset.total / g.total.transform('sum')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 14.2 MovieLens 1M 数据集\n",
    "\n",
    "GroupLens Research提供了1990年代末和2000年代初从MovieLens用户收集的许多电影收视率数据集合。数据提供电影等级，电影元数据（类型和年份）以及有关用户的人口统计数据（年龄，邮政编码，性别标识和职业）。在基于机器学习算法的推荐系统的开发中，此类数据通常是令人感兴趣的。虽然我们不会在本书中详细探讨机器学习技术，但我将向您展示如何将这样的数据集切成切片并将其切成所需的确切形式。\n",
    "\n",
    "MovieLens 1M数据集包含从6,000名用户收集的4,000部电影中的100万个分级。它分布在三个表格中：评分，用户信息和电影信息。从ZIP文件中提取数据后，我们可以使用pandas.read_table将每个表加载到pandas DataFrame对象中："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:7: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.\n",
      "  import sys\n",
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.\n",
      "  # Remove the CWD from sys.path while we load stuff.\n",
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:13: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.\n",
      "  del sys.path[0]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# Make diaplay smaller\n",
    "pd.options.display.max_rows = 10\n",
    "\n",
    "unames = ['user_id', 'gender', 'age', 'occupation', 'zip']\n",
    "users = pd.read_table('datasets/movielens/users.dat', sep='::', header=None, names=unames)\n",
    "\n",
    "rnames = ['user_id', 'movie_id', 'rating', 'timestamp']\n",
    "ratings = pd.read_table('datasets/movielens/ratings.dat', sep='::', header=None, names=rnames)\n",
    "\n",
    "mnames = ['movie_id', 'title', 'genres']\n",
    "movies = pd.read_table('datasets/movielens/movies.dat', sep='::', header=None, names=mnames)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以使用Python的slice语法查看每个DataFrame的前几行，从而验证一切是否成功："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>occupation</th>\n",
       "      <th>zip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>F</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>48067</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>M</td>\n",
       "      <td>56</td>\n",
       "      <td>16</td>\n",
       "      <td>70072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>M</td>\n",
       "      <td>25</td>\n",
       "      <td>15</td>\n",
       "      <td>55117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>M</td>\n",
       "      <td>45</td>\n",
       "      <td>7</td>\n",
       "      <td>02460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>M</td>\n",
       "      <td>25</td>\n",
       "      <td>20</td>\n",
       "      <td>55455</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id gender  age  occupation    zip\n",
       "0        1      F    1          10  48067\n",
       "1        2      M   56          16  70072\n",
       "2        3      M   25          15  55117\n",
       "3        4      M   45           7  02460\n",
       "4        5      M   25          20  55455"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "users[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1193</td>\n",
       "      <td>5</td>\n",
       "      <td>978300760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>661</td>\n",
       "      <td>3</td>\n",
       "      <td>978302109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>914</td>\n",
       "      <td>3</td>\n",
       "      <td>978301968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3408</td>\n",
       "      <td>4</td>\n",
       "      <td>978300275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>2355</td>\n",
       "      <td>5</td>\n",
       "      <td>978824291</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  movie_id  rating  timestamp\n",
       "0        1      1193       5  978300760\n",
       "1        1       661       3  978302109\n",
       "2        1       914       3  978301968\n",
       "3        1      3408       4  978300275\n",
       "4        1      2355       5  978824291"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>movie_id</th>\n",
       "      <th>title</th>\n",
       "      <th>genres</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Toy Story (1995)</td>\n",
       "      <td>Animation|Children's|Comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>Jumanji (1995)</td>\n",
       "      <td>Adventure|Children's|Fantasy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Grumpier Old Men (1995)</td>\n",
       "      <td>Comedy|Romance</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Waiting to Exhale (1995)</td>\n",
       "      <td>Comedy|Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Father of the Bride Part II (1995)</td>\n",
       "      <td>Comedy</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   movie_id                               title                        genres\n",
       "0         1                    Toy Story (1995)   Animation|Children's|Comedy\n",
       "1         2                      Jumanji (1995)  Adventure|Children's|Fantasy\n",
       "2         3             Grumpier Old Men (1995)                Comedy|Romance\n",
       "3         4            Waiting to Exhale (1995)                  Comedy|Drama\n",
       "4         5  Father of the Bride Part II (1995)                        Comedy"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "movies[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1193</td>\n",
       "      <td>5</td>\n",
       "      <td>978300760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>661</td>\n",
       "      <td>3</td>\n",
       "      <td>978302109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>914</td>\n",
       "      <td>3</td>\n",
       "      <td>978301968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3408</td>\n",
       "      <td>4</td>\n",
       "      <td>978300275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>2355</td>\n",
       "      <td>5</td>\n",
       "      <td>978824291</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000204</th>\n",
       "      <td>6040</td>\n",
       "      <td>1091</td>\n",
       "      <td>1</td>\n",
       "      <td>956716541</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000205</th>\n",
       "      <td>6040</td>\n",
       "      <td>1094</td>\n",
       "      <td>5</td>\n",
       "      <td>956704887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000206</th>\n",
       "      <td>6040</td>\n",
       "      <td>562</td>\n",
       "      <td>5</td>\n",
       "      <td>956704746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000207</th>\n",
       "      <td>6040</td>\n",
       "      <td>1096</td>\n",
       "      <td>4</td>\n",
       "      <td>956715648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000208</th>\n",
       "      <td>6040</td>\n",
       "      <td>1097</td>\n",
       "      <td>4</td>\n",
       "      <td>956715569</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000209 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         user_id  movie_id  rating  timestamp\n",
       "0              1      1193       5  978300760\n",
       "1              1       661       3  978302109\n",
       "2              1       914       3  978301968\n",
       "3              1      3408       4  978300275\n",
       "4              1      2355       5  978824291\n",
       "...          ...       ...     ...        ...\n",
       "1000204     6040      1091       1  956716541\n",
       "1000205     6040      1094       5  956704887\n",
       "1000206     6040       562       5  956704746\n",
       "1000207     6040      1096       4  956715648\n",
       "1000208     6040      1097       4  956715569\n",
       "\n",
       "[1000209 rows x 4 columns]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请注意，年龄和职业编码为整数，表示数据集的README文件中描述的组。分析分布在三个表中的数据不是一件容易的事。例如，假设您要按性别和年龄计算特定电影的平均收视率。正如您将看到的，将所有数据合并到一个表中要容易得多。 使用pandas的合并功能，我们首先与用户合并分级，然后将结果与电影数据合并。pandas根据重叠的名称推断哪些列用作合并（或联接）键："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.merge(pd.merge(ratings, users), movies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>gender</th>\n",
       "      <th>age</th>\n",
       "      <th>occupation</th>\n",
       "      <th>zip</th>\n",
       "      <th>title</th>\n",
       "      <th>genres</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1193</td>\n",
       "      <td>5</td>\n",
       "      <td>978300760</td>\n",
       "      <td>F</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>48067</td>\n",
       "      <td>One Flew Over the Cuckoo's Nest (1975)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1193</td>\n",
       "      <td>5</td>\n",
       "      <td>978298413</td>\n",
       "      <td>M</td>\n",
       "      <td>56</td>\n",
       "      <td>16</td>\n",
       "      <td>70072</td>\n",
       "      <td>One Flew Over the Cuckoo's Nest (1975)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>12</td>\n",
       "      <td>1193</td>\n",
       "      <td>4</td>\n",
       "      <td>978220179</td>\n",
       "      <td>M</td>\n",
       "      <td>25</td>\n",
       "      <td>12</td>\n",
       "      <td>32793</td>\n",
       "      <td>One Flew Over the Cuckoo's Nest (1975)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>15</td>\n",
       "      <td>1193</td>\n",
       "      <td>4</td>\n",
       "      <td>978199279</td>\n",
       "      <td>M</td>\n",
       "      <td>25</td>\n",
       "      <td>7</td>\n",
       "      <td>22903</td>\n",
       "      <td>One Flew Over the Cuckoo's Nest (1975)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17</td>\n",
       "      <td>1193</td>\n",
       "      <td>5</td>\n",
       "      <td>978158471</td>\n",
       "      <td>M</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>95350</td>\n",
       "      <td>One Flew Over the Cuckoo's Nest (1975)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000204</th>\n",
       "      <td>5949</td>\n",
       "      <td>2198</td>\n",
       "      <td>5</td>\n",
       "      <td>958846401</td>\n",
       "      <td>M</td>\n",
       "      <td>18</td>\n",
       "      <td>17</td>\n",
       "      <td>47901</td>\n",
       "      <td>Modulations (1998)</td>\n",
       "      <td>Documentary</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000205</th>\n",
       "      <td>5675</td>\n",
       "      <td>2703</td>\n",
       "      <td>3</td>\n",
       "      <td>976029116</td>\n",
       "      <td>M</td>\n",
       "      <td>35</td>\n",
       "      <td>14</td>\n",
       "      <td>30030</td>\n",
       "      <td>Broken Vessels (1998)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000206</th>\n",
       "      <td>5780</td>\n",
       "      <td>2845</td>\n",
       "      <td>1</td>\n",
       "      <td>958153068</td>\n",
       "      <td>M</td>\n",
       "      <td>18</td>\n",
       "      <td>17</td>\n",
       "      <td>92886</td>\n",
       "      <td>White Boys (1999)</td>\n",
       "      <td>Drama</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000207</th>\n",
       "      <td>5851</td>\n",
       "      <td>3607</td>\n",
       "      <td>5</td>\n",
       "      <td>957756608</td>\n",
       "      <td>F</td>\n",
       "      <td>18</td>\n",
       "      <td>20</td>\n",
       "      <td>55410</td>\n",
       "      <td>One Little Indian (1973)</td>\n",
       "      <td>Comedy|Drama|Western</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000208</th>\n",
       "      <td>5938</td>\n",
       "      <td>2909</td>\n",
       "      <td>4</td>\n",
       "      <td>957273353</td>\n",
       "      <td>M</td>\n",
       "      <td>25</td>\n",
       "      <td>1</td>\n",
       "      <td>35401</td>\n",
       "      <td>Five Wives, Three Secretaries and Me (1998)</td>\n",
       "      <td>Documentary</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000209 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         user_id  movie_id  rating  timestamp gender  age  occupation    zip  \\\n",
       "0              1      1193       5  978300760      F    1          10  48067   \n",
       "1              2      1193       5  978298413      M   56          16  70072   \n",
       "2             12      1193       4  978220179      M   25          12  32793   \n",
       "3             15      1193       4  978199279      M   25           7  22903   \n",
       "4             17      1193       5  978158471      M   50           1  95350   \n",
       "...          ...       ...     ...        ...    ...  ...         ...    ...   \n",
       "1000204     5949      2198       5  958846401      M   18          17  47901   \n",
       "1000205     5675      2703       3  976029116      M   35          14  30030   \n",
       "1000206     5780      2845       1  958153068      M   18          17  92886   \n",
       "1000207     5851      3607       5  957756608      F   18          20  55410   \n",
       "1000208     5938      2909       4  957273353      M   25           1  35401   \n",
       "\n",
       "                                               title                genres  \n",
       "0             One Flew Over the Cuckoo's Nest (1975)                 Drama  \n",
       "1             One Flew Over the Cuckoo's Nest (1975)                 Drama  \n",
       "2             One Flew Over the Cuckoo's Nest (1975)                 Drama  \n",
       "3             One Flew Over the Cuckoo's Nest (1975)                 Drama  \n",
       "4             One Flew Over the Cuckoo's Nest (1975)                 Drama  \n",
       "...                                              ...                   ...  \n",
       "1000204                           Modulations (1998)           Documentary  \n",
       "1000205                        Broken Vessels (1998)                 Drama  \n",
       "1000206                            White Boys (1999)                 Drama  \n",
       "1000207                     One Little Indian (1973)  Comedy|Drama|Western  \n",
       "1000208  Five Wives, Three Secretaries and Me (1998)           Documentary  \n",
       "\n",
       "[1000209 rows x 10 columns]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                                            1\n",
       "movie_id                                        1193\n",
       "rating                                             5\n",
       "timestamp                                  978300760\n",
       "gender                                             F\n",
       "age                                                1\n",
       "occupation                                        10\n",
       "zip                                            48067\n",
       "title         One Flew Over the Cuckoo's Nest (1975)\n",
       "genres                                         Drama\n",
       "Name: 0, dtype: object"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.iloc[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "要获得按性别分组的每部电影的平均电影收视率，我们可以使用pivot_table方法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "mean_ratings = data.pivot_table('rating', index='title', columns='gender', aggfunc='mean')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>gender</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>$1,000,000 Duck (1971)</th>\n",
       "      <td>3.375000</td>\n",
       "      <td>2.761905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>'Night Mother (1986)</th>\n",
       "      <td>3.388889</td>\n",
       "      <td>3.352941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>'Til There Was You (1997)</th>\n",
       "      <td>2.675676</td>\n",
       "      <td>2.733333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>'burbs, The (1989)</th>\n",
       "      <td>2.793478</td>\n",
       "      <td>2.962085</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...And Justice for All (1979)</th>\n",
       "      <td>3.828571</td>\n",
       "      <td>3.689024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "gender                                F         M\n",
       "title                                            \n",
       "$1,000,000 Duck (1971)         3.375000  2.761905\n",
       "'Night Mother (1986)           3.388889  3.352941\n",
       "'Til There Was You (1997)      2.675676  2.733333\n",
       "'burbs, The (1989)             2.793478  2.962085\n",
       "...And Justice for All (1979)  3.828571  3.689024"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_ratings[:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这产生了另一个DataFrame，其中包含电影标题作为行标签（“索引”）和性别作为列标签的平均收视率。首先，我筛选出至少获得250个收视率（完全是任意数字）的电影；为此，我然后按标题对数据进行分组，并使用size（）获得每个标题的一系列分组大小："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "ratings_by_title = data.groupby('title').size()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "title\n",
       "$1,000,000 Duck (1971)                37\n",
       "'Night Mother (1986)                  70\n",
       "'Til There Was You (1997)             52\n",
       "'burbs, The (1989)                   303\n",
       "...And Justice for All (1979)        199\n",
       "1-900 (1994)                           2\n",
       "10 Things I Hate About You (1999)    700\n",
       "101 Dalmatians (1961)                565\n",
       "101 Dalmatians (1996)                364\n",
       "12 Angry Men (1957)                  616\n",
       "dtype: int64"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings_by_title[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "active_titles = ratings_by_title.index[ratings_by_title >= 250]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([''burbs, The (1989)', '10 Things I Hate About You (1999)',\n",
       "       '101 Dalmatians (1961)', '101 Dalmatians (1996)', '12 Angry Men (1957)',\n",
       "       '13th Warrior, The (1999)', '2 Days in the Valley (1996)',\n",
       "       '20,000 Leagues Under the Sea (1954)', '2001: A Space Odyssey (1968)',\n",
       "       '2010 (1984)',\n",
       "       ...\n",
       "       'X-Men (2000)', 'Year of Living Dangerously (1982)',\n",
       "       'Yellow Submarine (1968)', 'You've Got Mail (1998)',\n",
       "       'Young Frankenstein (1974)', 'Young Guns (1988)',\n",
       "       'Young Guns II (1990)', 'Young Sherlock Holmes (1985)',\n",
       "       'Zero Effect (1998)', 'eXistenZ (1999)'],\n",
       "      dtype='object', name='title', length=1216)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "active_titles"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，可以使用获得至少250个评分的标题索引来从mean_ratings中选择行："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Select rows on the index\n",
    "mean_ratings = mean_ratings.loc[active_titles]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>gender</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "      <th>diff</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>'burbs, The (1989)</th>\n",
       "      <td>2.793478</td>\n",
       "      <td>2.962085</td>\n",
       "      <td>0.168607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10 Things I Hate About You (1999)</th>\n",
       "      <td>3.646552</td>\n",
       "      <td>3.311966</td>\n",
       "      <td>-0.334586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101 Dalmatians (1961)</th>\n",
       "      <td>3.791444</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-0.291444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>101 Dalmatians (1996)</th>\n",
       "      <td>3.240000</td>\n",
       "      <td>2.911215</td>\n",
       "      <td>-0.328785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12 Angry Men (1957)</th>\n",
       "      <td>4.184397</td>\n",
       "      <td>4.328421</td>\n",
       "      <td>0.144024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Young Guns (1988)</th>\n",
       "      <td>3.371795</td>\n",
       "      <td>3.425620</td>\n",
       "      <td>0.053825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Young Guns II (1990)</th>\n",
       "      <td>2.934783</td>\n",
       "      <td>2.904025</td>\n",
       "      <td>-0.030758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Young Sherlock Holmes (1985)</th>\n",
       "      <td>3.514706</td>\n",
       "      <td>3.363344</td>\n",
       "      <td>-0.151362</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Zero Effect (1998)</th>\n",
       "      <td>3.864407</td>\n",
       "      <td>3.723140</td>\n",
       "      <td>-0.141266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>eXistenZ (1999)</th>\n",
       "      <td>3.098592</td>\n",
       "      <td>3.289086</td>\n",
       "      <td>0.190494</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1216 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "gender                                    F         M      diff\n",
       "title                                                          \n",
       "'burbs, The (1989)                 2.793478  2.962085  0.168607\n",
       "10 Things I Hate About You (1999)  3.646552  3.311966 -0.334586\n",
       "101 Dalmatians (1961)              3.791444  3.500000 -0.291444\n",
       "101 Dalmatians (1996)              3.240000  2.911215 -0.328785\n",
       "12 Angry Men (1957)                4.184397  4.328421  0.144024\n",
       "...                                     ...       ...       ...\n",
       "Young Guns (1988)                  3.371795  3.425620  0.053825\n",
       "Young Guns II (1990)               2.934783  2.904025 -0.030758\n",
       "Young Sherlock Holmes (1985)       3.514706  3.363344 -0.151362\n",
       "Zero Effect (1998)                 3.864407  3.723140 -0.141266\n",
       "eXistenZ (1999)                    3.098592  3.289086  0.190494\n",
       "\n",
       "[1216 rows x 3 columns]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_ratings"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "要在女性观众中观看顶级电影，我们可以按F列降序排列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_female_ratings = mean_ratings.sort_values(by='F', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>gender</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "      <th>diff</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Close Shave, A (1995)</th>\n",
       "      <td>4.644444</td>\n",
       "      <td>4.473795</td>\n",
       "      <td>-0.170650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wrong Trousers, The (1993)</th>\n",
       "      <td>4.588235</td>\n",
       "      <td>4.478261</td>\n",
       "      <td>-0.109974</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)</th>\n",
       "      <td>4.572650</td>\n",
       "      <td>4.464589</td>\n",
       "      <td>-0.108060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wallace &amp; Gromit: The Best of Aardman Animation (1996)</th>\n",
       "      <td>4.563107</td>\n",
       "      <td>4.385075</td>\n",
       "      <td>-0.178032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Schindler's List (1993)</th>\n",
       "      <td>4.562602</td>\n",
       "      <td>4.491415</td>\n",
       "      <td>-0.071187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Avengers, The (1998)</th>\n",
       "      <td>1.915254</td>\n",
       "      <td>2.017467</td>\n",
       "      <td>0.102213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Speed 2: Cruise Control (1997)</th>\n",
       "      <td>1.906667</td>\n",
       "      <td>1.863014</td>\n",
       "      <td>-0.043653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rocky V (1990)</th>\n",
       "      <td>1.878788</td>\n",
       "      <td>2.132780</td>\n",
       "      <td>0.253992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Barb Wire (1996)</th>\n",
       "      <td>1.585366</td>\n",
       "      <td>2.100386</td>\n",
       "      <td>0.515020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Battlefield Earth (2000)</th>\n",
       "      <td>1.574468</td>\n",
       "      <td>1.616949</td>\n",
       "      <td>0.042481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1216 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "gender                                                     F         M  \\\n",
       "title                                                                    \n",
       "Close Shave, A (1995)                               4.644444  4.473795   \n",
       "Wrong Trousers, The (1993)                          4.588235  4.478261   \n",
       "Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)       4.572650  4.464589   \n",
       "Wallace & Gromit: The Best of Aardman Animation...  4.563107  4.385075   \n",
       "Schindler's List (1993)                             4.562602  4.491415   \n",
       "...                                                      ...       ...   \n",
       "Avengers, The (1998)                                1.915254  2.017467   \n",
       "Speed 2: Cruise Control (1997)                      1.906667  1.863014   \n",
       "Rocky V (1990)                                      1.878788  2.132780   \n",
       "Barb Wire (1996)                                    1.585366  2.100386   \n",
       "Battlefield Earth (2000)                            1.574468  1.616949   \n",
       "\n",
       "gender                                                  diff  \n",
       "title                                                         \n",
       "Close Shave, A (1995)                              -0.170650  \n",
       "Wrong Trousers, The (1993)                         -0.109974  \n",
       "Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)      -0.108060  \n",
       "Wallace & Gromit: The Best of Aardman Animation... -0.178032  \n",
       "Schindler's List (1993)                            -0.071187  \n",
       "...                                                      ...  \n",
       "Avengers, The (1998)                                0.102213  \n",
       "Speed 2: Cruise Control (1997)                     -0.043653  \n",
       "Rocky V (1990)                                      0.253992  \n",
       "Barb Wire (1996)                                    0.515020  \n",
       "Battlefield Earth (2000)                            0.042481  \n",
       "\n",
       "[1216 rows x 3 columns]"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_female_ratings"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 衡量等级差异\n",
    "\n",
    "假设您想查找在男性和女性观众之间最分裂的电影。一种方法是在mean_ratings中添加一列，其中包含均值差，然后按该值排序："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "mean_ratings['diff'] = mean_ratings['M'] - mean_ratings['F']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "按“不同”排序会产生评级差异最大的电影，这样我们就可以了解哪些电影更受女性青睐："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "sorted_by_diff = mean_ratings.sort_values(by='diff')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>gender</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "      <th>diff</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Dirty Dancing (1987)</th>\n",
       "      <td>3.790378</td>\n",
       "      <td>2.959596</td>\n",
       "      <td>-0.830782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Jumpin' Jack Flash (1986)</th>\n",
       "      <td>3.254717</td>\n",
       "      <td>2.578358</td>\n",
       "      <td>-0.676359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Grease (1978)</th>\n",
       "      <td>3.975265</td>\n",
       "      <td>3.367041</td>\n",
       "      <td>-0.608224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Little Women (1994)</th>\n",
       "      <td>3.870588</td>\n",
       "      <td>3.321739</td>\n",
       "      <td>-0.548849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel Magnolias (1989)</th>\n",
       "      <td>3.901734</td>\n",
       "      <td>3.365957</td>\n",
       "      <td>-0.535777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Anastasia (1997)</th>\n",
       "      <td>3.800000</td>\n",
       "      <td>3.281609</td>\n",
       "      <td>-0.518391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rocky Horror Picture Show, The (1975)</th>\n",
       "      <td>3.673016</td>\n",
       "      <td>3.160131</td>\n",
       "      <td>-0.512885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Color Purple, The (1985)</th>\n",
       "      <td>4.158192</td>\n",
       "      <td>3.659341</td>\n",
       "      <td>-0.498851</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age of Innocence, The (1993)</th>\n",
       "      <td>3.827068</td>\n",
       "      <td>3.339506</td>\n",
       "      <td>-0.487561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Free Willy (1993)</th>\n",
       "      <td>2.921348</td>\n",
       "      <td>2.438776</td>\n",
       "      <td>-0.482573</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "gender                                        F         M      diff\n",
       "title                                                              \n",
       "Dirty Dancing (1987)                   3.790378  2.959596 -0.830782\n",
       "Jumpin' Jack Flash (1986)              3.254717  2.578358 -0.676359\n",
       "Grease (1978)                          3.975265  3.367041 -0.608224\n",
       "Little Women (1994)                    3.870588  3.321739 -0.548849\n",
       "Steel Magnolias (1989)                 3.901734  3.365957 -0.535777\n",
       "Anastasia (1997)                       3.800000  3.281609 -0.518391\n",
       "Rocky Horror Picture Show, The (1975)  3.673016  3.160131 -0.512885\n",
       "Color Purple, The (1985)               4.158192  3.659341 -0.498851\n",
       "Age of Innocence, The (1993)           3.827068  3.339506 -0.487561\n",
       "Free Willy (1993)                      2.921348  2.438776 -0.482573"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted_by_diff[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "颠倒顺序，再从前十行中剔除，我们得到了男人偏爱的电影，而女人却没有这么认为："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>gender</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "      <th>diff</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Good, The Bad and The Ugly, The (1966)</th>\n",
       "      <td>3.494949</td>\n",
       "      <td>4.221300</td>\n",
       "      <td>0.726351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Kentucky Fried Movie, The (1977)</th>\n",
       "      <td>2.878788</td>\n",
       "      <td>3.555147</td>\n",
       "      <td>0.676359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dumb &amp; Dumber (1994)</th>\n",
       "      <td>2.697987</td>\n",
       "      <td>3.336595</td>\n",
       "      <td>0.638608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Longest Day, The (1962)</th>\n",
       "      <td>3.411765</td>\n",
       "      <td>4.031447</td>\n",
       "      <td>0.619682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cable Guy, The (1996)</th>\n",
       "      <td>2.250000</td>\n",
       "      <td>2.863787</td>\n",
       "      <td>0.613787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Evil Dead II (Dead By Dawn) (1987)</th>\n",
       "      <td>3.297297</td>\n",
       "      <td>3.909283</td>\n",
       "      <td>0.611985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hidden, The (1987)</th>\n",
       "      <td>3.137931</td>\n",
       "      <td>3.745098</td>\n",
       "      <td>0.607167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rocky III (1982)</th>\n",
       "      <td>2.361702</td>\n",
       "      <td>2.943503</td>\n",
       "      <td>0.581801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Caddyshack (1980)</th>\n",
       "      <td>3.396135</td>\n",
       "      <td>3.969737</td>\n",
       "      <td>0.573602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>For a Few Dollars More (1965)</th>\n",
       "      <td>3.409091</td>\n",
       "      <td>3.953795</td>\n",
       "      <td>0.544704</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "gender                                         F         M      diff\n",
       "title                                                               \n",
       "Good, The Bad and The Ugly, The (1966)  3.494949  4.221300  0.726351\n",
       "Kentucky Fried Movie, The (1977)        2.878788  3.555147  0.676359\n",
       "Dumb & Dumber (1994)                    2.697987  3.336595  0.638608\n",
       "Longest Day, The (1962)                 3.411765  4.031447  0.619682\n",
       "Cable Guy, The (1996)                   2.250000  2.863787  0.613787\n",
       "Evil Dead II (Dead By Dawn) (1987)      3.297297  3.909283  0.611985\n",
       "Hidden, The (1987)                      3.137931  3.745098  0.607167\n",
       "Rocky III (1982)                        2.361702  2.943503  0.581801\n",
       "Caddyshack (1980)                       3.396135  3.969737  0.573602\n",
       "For a Few Dollars More (1965)           3.409091  3.953795  0.544704"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Reverse order of rows, take first 10 rows\n",
    "sorted_by_diff[::-1][:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "相反，假设您想要的电影引起了观众之间的最大分歧，而与性别认同无关。差异可以通过评分的方差或标准偏差来衡量："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Standard deviation of rating grouped by title\n",
    "rating_std_by_title = data.groupby('title')['rating'].std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Filter down to active_titles\n",
    "rating_std_by_title = rating_std_by_title.loc[active_titles]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "title\n",
       "Dumb & Dumber (1994)                     1.321333\n",
       "Blair Witch Project, The (1999)          1.316368\n",
       "Natural Born Killers (1994)              1.307198\n",
       "Tank Girl (1995)                         1.277695\n",
       "Rocky Horror Picture Show, The (1975)    1.260177\n",
       "Eyes Wide Shut (1999)                    1.259624\n",
       "Evita (1996)                             1.253631\n",
       "Billy Madison (1995)                     1.249970\n",
       "Fear and Loathing in Las Vegas (1998)    1.246408\n",
       "Bicentennial Man (1999)                  1.245533\n",
       "Name: rating, dtype: float64"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Order Series by value in descending order\n",
    "rating_std_by_title.sort_values(ascending=False)[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可能已经注意到，电影体裁以竖线分隔（|）字符串形式给出。如果您想按类型进行一些分析，则需要更多工作才能将类型信息转换为更实用的形式。\n",
    "\n",
    "## 14.3 美国婴儿名称1880-2010\n",
    "\n",
    "美国社会保障局（SSA）提供了有关1880年至今的婴儿名字发生频率的数据。Hadley Wickham是多个流行的R包的作者，经常利用此数据集来说明R中的数据操作。\n",
    "\n",
    "我们需要进行一些数据整理来加载该数据集，但是一旦完成，我们将获得一个如下所示的DataFrame：\n",
    "\n",
    "您可能需要对数据集做很多事情：\n",
    "\n",
    "- 可视化随时间推移使用特定名字（您自己的名字或其他名字）的婴儿比例\n",
    "- 确定名称的相对排名\n",
    "- 确定每年最受欢迎的名字，或者人气上升或下降最厉害的名字\n",
    "- 分析名称的趋势：元音，辅音，长度，整体多样性，拼写变化，首字母和尾字母\n",
    "- 分析趋势的外部来源：圣经名称，名人，人口变化\n",
    "\n",
    "使用本书中的工具，可以进行许多此类分析，因此，我将向您介绍其中一些。\n",
    "\n",
    "在撰写本文时，美国社会保障局每年提供一个数据文件，其中包含每个性别/名字组合的出生总数。这些文件的原始存档可从http://www.ssa.gov/oact/babynames/limits.html 获取。\n",
    "\n",
    "如果您在阅读本文时已移动了此页面，则很有可能通过互联网搜索再次找到该页面。下载“ National data”文件名.zip并解压缩后，您将拥有一个包含一系列文件的目录，例如yob1880.txt。我使用Unix head命令查看其中一个文件的前10行（在Windows上，您可以使用more命令或在文本编辑器中将其打开）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mary,F,7065\r",
      "\r\n",
      "Anna,F,2604\r",
      "\r\n",
      "Emma,F,2003\r",
      "\r\n",
      "Elizabeth,F,1939\r",
      "\r\n",
      "Minnie,F,1746\r",
      "\r\n",
      "Margaret,F,1578\r",
      "\r\n",
      "Ida,F,1472\r",
      "\r\n",
      "Alice,F,1414\r",
      "\r\n",
      "Bertha,F,1320\r",
      "\r\n",
      "Sarah,F,1288\r",
      "\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 10 datasets/babynames/yob1880.txt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于已经采用逗号分隔的形式，因此可以使用pandas.read_csv将其加载到DataFrame中："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "names1880 = pd.read_csv('datasets/babynames/yob1880.txt', names=['name', 'sex', 'births'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995</th>\n",
       "      <td>Woodie</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1996</th>\n",
       "      <td>Worthy</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997</th>\n",
       "      <td>Wright</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1998</th>\n",
       "      <td>York</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1999</th>\n",
       "      <td>Zachariah</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2000 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           name sex  births\n",
       "0          Mary   F    7065\n",
       "1          Anna   F    2604\n",
       "2          Emma   F    2003\n",
       "3     Elizabeth   F    1939\n",
       "4        Minnie   F    1746\n",
       "...         ...  ..     ...\n",
       "1995     Woodie   M       5\n",
       "1996     Worthy   M       5\n",
       "1997     Wright   M       5\n",
       "1998       York   M       5\n",
       "1999  Zachariah   M       5\n",
       "\n",
       "[2000 rows x 3 columns]"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names1880"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这些文件仅包含每年至少出现五次的名称，因此，为简单起见，我们可以将按性别划分的出生总数作为该年的出生总数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sex\n",
       "F     90993\n",
       "M    110493\n",
       "Name: births, dtype: int64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names1880.groupby('sex').births.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于数据集按年份分为文件，因此要做的第一件事就是将所有数据组合到单个DataFrame中，并进一步添加Year字段。您可以使用pandas.concat进行此操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "years = range(1880, 2011)\n",
    "\n",
    "pieces = []\n",
    "columns = ['name', 'sex', 'births']\n",
    "\n",
    "for year in years:\n",
    "    path = 'datasets/babynames/yob%d.txt' % year\n",
    "    frame = pd.read_csv(path, names=columns)\n",
    "    frame['year'] = year\n",
    "    pieces.append(frame)\n",
    "    \n",
    "# Cincatenate everything into a single DataFrame\n",
    "names = pd.concat(pieces, ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里有几件事要注意。首先，请记住，默认情况下，concat将DataFrame对象按行粘合在一起。其次，您必须传递ignore_index=True，因为我们对保留从read_csv返回的原始行号不感兴趣。因此，我们现在有了一个非常大的DataFrame，其中包含所有名称数据："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690779</th>\n",
       "      <td>Zymaire</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690780</th>\n",
       "      <td>Zyonne</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690781</th>\n",
       "      <td>Zyquarius</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690782</th>\n",
       "      <td>Zyran</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690783</th>\n",
       "      <td>Zzyzx</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1690784 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              name sex  births  year\n",
       "0             Mary   F    7065  1880\n",
       "1             Anna   F    2604  1880\n",
       "2             Emma   F    2003  1880\n",
       "3        Elizabeth   F    1939  1880\n",
       "4           Minnie   F    1746  1880\n",
       "...            ...  ..     ...   ...\n",
       "1690779    Zymaire   M       5  2010\n",
       "1690780     Zyonne   M       5  2010\n",
       "1690781  Zyquarius   M       5  2010\n",
       "1690782      Zyran   M       5  2010\n",
       "1690783      Zzyzx   M       5  2010\n",
       "\n",
       "[1690784 rows x 4 columns]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有了这些数据，我们就可以开始使用groupby或pivot_table在年份和性别级别汇总数据了（见图14-4）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "total_births = names.pivot_table('births', index='year', columns='sex', aggfunc='sum')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>sex</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2006</th>\n",
       "      <td>1896468</td>\n",
       "      <td>2050234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2007</th>\n",
       "      <td>1916888</td>\n",
       "      <td>2069242</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008</th>\n",
       "      <td>1883645</td>\n",
       "      <td>2032310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2009</th>\n",
       "      <td>1827643</td>\n",
       "      <td>1973359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010</th>\n",
       "      <td>1759010</td>\n",
       "      <td>1898382</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex         F        M\n",
       "year                  \n",
       "2006  1896468  2050234\n",
       "2007  1916888  2069242\n",
       "2008  1883645  2032310\n",
       "2009  1827643  1973359\n",
       "2010  1759010  1898382"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_births.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6caacffd0>"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "total_births.plot(title='Total births by sex and year', figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，我们插入一个列 prop，其中给定每个名字的婴儿比例相对于总出生人数。如果prop值为0.02，则表示每100个婴儿中有2个具有特定的名称。因此，我们将数据按年份和性别分组，然后将新列添加到每个组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "def add_prop(group):\n",
    "    group['prop'] = group.births / group.births.sum()\n",
    "    return group\n",
    "\n",
    "names = names.groupby(['year', 'sex']).apply(add_prop)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，生成的完整数据集具有以下列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.077643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.028618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.022013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.021309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.019188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690779</th>\n",
       "      <td>Zymaire</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690780</th>\n",
       "      <td>Zyonne</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690781</th>\n",
       "      <td>Zyquarius</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690782</th>\n",
       "      <td>Zyran</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690783</th>\n",
       "      <td>Zzyzx</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1690784 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              name sex  births  year      prop\n",
       "0             Mary   F    7065  1880  0.077643\n",
       "1             Anna   F    2604  1880  0.028618\n",
       "2             Emma   F    2003  1880  0.022013\n",
       "3        Elizabeth   F    1939  1880  0.021309\n",
       "4           Minnie   F    1746  1880  0.019188\n",
       "...            ...  ..     ...   ...       ...\n",
       "1690779    Zymaire   M       5  2010  0.000003\n",
       "1690780     Zyonne   M       5  2010  0.000003\n",
       "1690781  Zyquarius   M       5  2010  0.000003\n",
       "1690782      Zyran   M       5  2010  0.000003\n",
       "1690783      Zzyzx   M       5  2010  0.000003\n",
       "\n",
       "[1690784 rows x 5 columns]"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当执行这样的分组操作时，进行健全性检查通常很有价值，例如验证在所有分组中prop列的总和为1："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "year  sex\n",
       "1880  F      1.0\n",
       "      M      1.0\n",
       "1881  F      1.0\n",
       "      M      1.0\n",
       "1882  F      1.0\n",
       "            ... \n",
       "2008  M      1.0\n",
       "2009  F      1.0\n",
       "      M      1.0\n",
       "2010  F      1.0\n",
       "      M      1.0\n",
       "Name: prop, Length: 262, dtype: float64"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names.groupby(['year', 'sex']).prop.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "既然完成了，我将提取数据的一部分以方便进一步分析：每种性别/年份组合的前1000个名字。这是另一组操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_top1000(group):\n",
    "    return group.sort_values(by='births', ascending=False)[:1000]\n",
    "\n",
    "grouped = names.groupby(['year', 'sex'])\n",
    "top1000 = grouped.apply(get_top1000)\n",
    "\n",
    "# Drop the group index, not needed\n",
    "top1000.reset_index(inplace=True, drop=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在生成的数据集要小得多："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.077643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.028618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.022013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.021309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.019188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261872</th>\n",
       "      <td>Camilo</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261873</th>\n",
       "      <td>Destin</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261874</th>\n",
       "      <td>Jaquan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261875</th>\n",
       "      <td>Jaydan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261876</th>\n",
       "      <td>Maxton</td>\n",
       "      <td>M</td>\n",
       "      <td>193</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>261877 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             name sex  births  year      prop\n",
       "0            Mary   F    7065  1880  0.077643\n",
       "1            Anna   F    2604  1880  0.028618\n",
       "2            Emma   F    2003  1880  0.022013\n",
       "3       Elizabeth   F    1939  1880  0.021309\n",
       "4          Minnie   F    1746  1880  0.019188\n",
       "...           ...  ..     ...   ...       ...\n",
       "261872     Camilo   M     194  2010  0.000102\n",
       "261873     Destin   M     194  2010  0.000102\n",
       "261874     Jaquan   M     194  2010  0.000102\n",
       "261875     Jaydan   M     194  2010  0.000102\n",
       "261876     Maxton   M     193  2010  0.000102\n",
       "\n",
       "[261877 rows x 5 columns]"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top1000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在接下来的数据调查中，我们将使用前1000个数据集。\n",
    "\n",
    "### 分析名称趋势\n",
    "\n",
    "有了完整的数据集和前1,000个数据集，我们就可以开始分析各种感兴趣的命名趋势。首先很容易将前1000个名字分为男孩和女孩两个部分："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "boys = top1000[top1000.sex == 'M']\n",
    "girls = top1000[top1000.sex == 'F']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以绘制简单的时间序列，例如每年的Johns或Marys数量，但需要一些调整才能更有用。让我们形成一个按年龄和姓名分列的出生总数的数据透视表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "total_births = top1000.pivot_table('births', index='year', columns='name', aggfunc=sum)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，可以使用DataFrame的plot方法绘制一些名称（图14-5显示了结果）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 131 entries, 1880 to 2010\n",
      "Columns: 6868 entries, Aaden to Zuri\n",
      "dtypes: float64(6868)\n",
      "memory usage: 6.9 MB\n"
     ]
    }
   ],
   "source": [
    "total_births.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "subset = total_births[['John', 'Harry', 'Mary', 'Marilyn']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([<matplotlib.axes._subplots.AxesSubplot object at 0x7ff6abd9a4d0>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x7ff6abdbfc90>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x7ff6aac3ae90>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x7ff6aac709d0>],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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f0AV/qEaFcAf97H/48As/PclCu8Dj/cBYibwS6Acfy/yTRz4z5vHgNF8Mazjc1cAEcAqr9bn+GLYyK+B8UAN/gmPLxzge4qIHBD78vA7ERGRfTP/A3KecM49dBjfoz+wBsh0ztUervcRETkY6pEWEZEexfwPafk34BmFaBHpybQYvYiI9Bje+t078A8vmRHkckRE9klDO0REREREAqChHSIiIiIiAVCQFhEREREJgIK0iIiIiEgAFKRFRERERAKgIC0iIiIiEgAFaRERERGRAChIi4iIiIgEQEFaRERERCQACtIiIiIiIgFQkBYRERERCYCCtIiIiIhIABSkRUREREQCoCAtIiIiIhIABWkRERERkQAoSIuIiIiIBEBBWkREREQkAArSIiIiIiIBUJAWEREREQmAgrSIiIiISAAUpEVEREREAqAgLSIiIiISAAVpEREREZEAKEiLiIiIiARAQVpEREREJAAK0iIiIiIiAVCQFhEREREJgIK0iIiIiEgAFKRFRERERAKgIC0iIiIiEgAFaRERERGRAChIi4iIiIgEQEFaRERERCQACtIiIiIiIgFQkBYRERERCYCCtIiIiIhIABSkRUREREQCoCAtIiIiIhIABWkRERERkQAoSIuIiIiIBEBBWkREREQkAArSIiIiIiIBUJAWEREREQmAgrSIiIiISAAUpEVEREREAqAgLSIiIiISAAVpEREREZEAKEiLiIiIiARAQVpEREREJAAK0iIiIiIiAVCQFhEREREJgIK0iIiIiEgAFKRFRERERAKgIC0iIiIiEgAFaRERERGRAChIi4iIiIgEQEFaRERERCQACtIiIiIiIgFQkBYRERERCUBYsAsIVFpamsvPzw92GSIiIiLShy1evHiXcy69q229Nkjn5+ezaNGiYJchIiIiIn2YmW3Z2zYN7RARERERCYCCtIiI7NbR4YJdgohIr6EgLSIiANQ1tzH9j7O5+531wS5FRKRX6LVjpEVE5ND6+6IStlY2cte765g8MIXjClKDXZKI9CBtbW2UlJTQ3Nwc7FIOi6ioKHJzcwkPD+/2MQrSIiJCe4fjsU+KOCY3kbpmH//292W8eeM0kmIigl2aiPQQJSUlxMfHk5+fj5kFu5xDyjlHRUUFJSUlDBw4sNvHaWiHiIjw7uodbK1s5LoTC7jr4rGU17XwyxdX4JzGTIuI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\n",
      "text/plain": [
       "<Figure size 864x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "subset.plot(subplots=True, figsize=(12, 10), grid=False, title='Number of births per year')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "综观这一点，您可能会得出结论，这些名字已经不再受到美国人的青睐。但是这个故事实际上比这更复杂，这将在下一部分中进行探讨。\n",
    "\n",
    "#### 衡量命名多样性的增长\n",
    "\n",
    "绘图中减少的一种解释是，越来越少的父母为孩子选择共同的名字。可以在数据中探索和证实这一假设。一种衡量方法是用前1000个最受欢迎的名字表示的出生比例，我按照年龄和性别对其进行汇总和绘图（图14-6显示了所得绘图）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "table = top1000.pivot_table('prop', index='year', columns='sex', aggfunc=sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6ad7fd690>"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "table.plot(title='Sum of table1000.prop by year and sex', \n",
    "           yticks=np.linspace(0, 1.2, 13), xticks=range(1880, 2020, 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以看到，实际上，名称多样性似乎正在增加（前1000名中总比例的下降）。另一个有趣的指标是，在出生率最高的50％的人群中，按照姓氏从高到低的顺序排列不同的名字 这个数字计算起来有些棘手。让我们考虑一下2010年的男孩名字："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = boys[boys.year == 2010]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>260877</th>\n",
       "      <td>Jacob</td>\n",
       "      <td>M</td>\n",
       "      <td>21875</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.011523</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260878</th>\n",
       "      <td>Ethan</td>\n",
       "      <td>M</td>\n",
       "      <td>17866</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.009411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260879</th>\n",
       "      <td>Michael</td>\n",
       "      <td>M</td>\n",
       "      <td>17133</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.009025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260880</th>\n",
       "      <td>Jayden</td>\n",
       "      <td>M</td>\n",
       "      <td>17030</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.008971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260881</th>\n",
       "      <td>William</td>\n",
       "      <td>M</td>\n",
       "      <td>16870</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.008887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261872</th>\n",
       "      <td>Camilo</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261873</th>\n",
       "      <td>Destin</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261874</th>\n",
       "      <td>Jaquan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261875</th>\n",
       "      <td>Jaydan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261876</th>\n",
       "      <td>Maxton</td>\n",
       "      <td>M</td>\n",
       "      <td>193</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           name sex  births  year      prop\n",
       "260877    Jacob   M   21875  2010  0.011523\n",
       "260878    Ethan   M   17866  2010  0.009411\n",
       "260879  Michael   M   17133  2010  0.009025\n",
       "260880   Jayden   M   17030  2010  0.008971\n",
       "260881  William   M   16870  2010  0.008887\n",
       "...         ...  ..     ...   ...       ...\n",
       "261872   Camilo   M     194  2010  0.000102\n",
       "261873   Destin   M     194  2010  0.000102\n",
       "261874   Jaquan   M     194  2010  0.000102\n",
       "261875   Jaydan   M     194  2010  0.000102\n",
       "261876   Maxton   M     193  2010  0.000102\n",
       "\n",
       "[1000 rows x 5 columns]"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在按降序对道具进行排序之后，我们想知道要达到50％，需要多少个最受欢迎的名字。您可以编写一个for循环来执行此操作，但是矢量化NumPy方式会更聪明。取prop的累积总和，然后调用searchsorted方法，返回累积总和中需要插入0.5的位置以保持其排序顺序："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "prop_cumsum = df.sort_values(by='prop', ascending=False).prop.cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "260877    0.011523\n",
       "260878    0.020934\n",
       "260879    0.029959\n",
       "260880    0.038930\n",
       "260881    0.047817\n",
       "260882    0.056579\n",
       "260883    0.065155\n",
       "260884    0.073414\n",
       "260885    0.081528\n",
       "260886    0.089621\n",
       "Name: prop, dtype: float64"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prop_cumsum[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "116"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prop_cumsum.values.searchsorted(0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于数组的索引为零，因此将结果加1可获得117的结果。相比之下，在1900年，这个数字要小得多："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = boys[boys.year == 1900]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "in1900 = df.sort_values(by='prop', ascending=False).prop.cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "in1900.values.searchsorted(0.5) + 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，您可以将此操作应用于每个年份/性别组合，对这些字段进行分组，并应用一个函数来返回每个组的计数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_quantile_count(group, q=0.5):\n",
    "    group = group.sort_values(by='prop', ascending=False)\n",
    "    return group.prop.cumsum().values.searchsorted(q) + 1\n",
    "\n",
    "diversity = top1000.groupby(['year', 'sex']).apply(get_quantile_count)\n",
    "diversity = diversity.unstack('sex')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，由此产生的DataFrame多样性具有两个时间序列，每个性别一个，按年份索引。可以在IPython中对其进行检查，并像以前一样进行绘制（见图14-7）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>sex</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1880</th>\n",
       "      <td>38</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1881</th>\n",
       "      <td>38</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1882</th>\n",
       "      <td>38</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1883</th>\n",
       "      <td>39</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1884</th>\n",
       "      <td>39</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex    F   M\n",
       "year        \n",
       "1880  38  14\n",
       "1881  38  14\n",
       "1882  38  15\n",
       "1883  39  15\n",
       "1884  39  16"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diversity.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6aad43290>"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "diversity.plot(title='Number of popular names in top 50%', figsize=(12, 8))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如您所见，女孩的名字总是比男孩的名字更加多样化，并且随着时间的流逝，它们变得越来越多。进一步的分析究竟是什么驱动多样性的发展，如替代拼写的增加，留给读者。\n",
    "\n",
    "#### 最后一个字母革命\n",
    "\n",
    "2007年，婴儿名字研究者劳拉·瓦滕伯格（Laura Wattenberg）在她的网站上指出，在过去的100年中，按姓氏开头的男孩名字的分布已发生了巨大变化。为了看到这一点，我们首先按年，性别和最后一个字母汇总完整数据集中的所有出生："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "# extract last letter from name column\n",
    "get_last_letter = lambda x: x[-1]\n",
    "last_letters = names.name.map(get_last_letter)\n",
    "last_letters.name = 'last_letter'\n",
    "\n",
    "table = names.pivot_table('births', index=last_letters, columns=['sex', 'year'], aggfunc=sum)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，我们选择跨越历史的三个代表性年份，并打印前几行："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [],
   "source": [
    "subtable = table.reindex(columns=[1910, 1960, 2010], level='year')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th colspan=\"3\" halign=\"left\">F</th>\n",
       "      <th colspan=\"3\" halign=\"left\">M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>last_letter</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>108376.0</td>\n",
       "      <td>691247.0</td>\n",
       "      <td>670605.0</td>\n",
       "      <td>977.0</td>\n",
       "      <td>5204.0</td>\n",
       "      <td>28438.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>NaN</td>\n",
       "      <td>694.0</td>\n",
       "      <td>450.0</td>\n",
       "      <td>411.0</td>\n",
       "      <td>3912.0</td>\n",
       "      <td>38859.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>5.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>946.0</td>\n",
       "      <td>482.0</td>\n",
       "      <td>15476.0</td>\n",
       "      <td>23125.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>6750.0</td>\n",
       "      <td>3729.0</td>\n",
       "      <td>2607.0</td>\n",
       "      <td>22111.0</td>\n",
       "      <td>262112.0</td>\n",
       "      <td>44398.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>e</th>\n",
       "      <td>133569.0</td>\n",
       "      <td>435013.0</td>\n",
       "      <td>313833.0</td>\n",
       "      <td>28655.0</td>\n",
       "      <td>178823.0</td>\n",
       "      <td>129012.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex                 F                            M                    \n",
       "year             1910      1960      2010     1910      1960      2010\n",
       "last_letter                                                           \n",
       "a            108376.0  691247.0  670605.0    977.0    5204.0   28438.0\n",
       "b                 NaN     694.0     450.0    411.0    3912.0   38859.0\n",
       "c                 5.0      49.0     946.0    482.0   15476.0   23125.0\n",
       "d              6750.0    3729.0    2607.0  22111.0  262112.0   44398.0\n",
       "e            133569.0  435013.0  313833.0  28655.0  178823.0  129012.0"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtable.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，按总出生数对表格进行归一化，以计算出一个新表格，其中包含以每个字母结尾的每种性别的总出生比例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sex  year\n",
       "F    1910     396416.0\n",
       "     1960    2022062.0\n",
       "     2010    1759010.0\n",
       "M    1910     194198.0\n",
       "     1960    2132588.0\n",
       "     2010    1898382.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtable.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "letter_prop = subtable / subtable.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th colspan=\"3\" halign=\"left\">F</th>\n",
       "      <th colspan=\"3\" halign=\"left\">M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>last_letter</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>0.273390</td>\n",
       "      <td>0.341853</td>\n",
       "      <td>0.381240</td>\n",
       "      <td>0.005031</td>\n",
       "      <td>0.002440</td>\n",
       "      <td>0.014980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000343</td>\n",
       "      <td>0.000256</td>\n",
       "      <td>0.002116</td>\n",
       "      <td>0.001834</td>\n",
       "      <td>0.020470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>0.000013</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000538</td>\n",
       "      <td>0.002482</td>\n",
       "      <td>0.007257</td>\n",
       "      <td>0.012181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>0.017028</td>\n",
       "      <td>0.001844</td>\n",
       "      <td>0.001482</td>\n",
       "      <td>0.113858</td>\n",
       "      <td>0.122908</td>\n",
       "      <td>0.023387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>e</th>\n",
       "      <td>0.336941</td>\n",
       "      <td>0.215133</td>\n",
       "      <td>0.178415</td>\n",
       "      <td>0.147556</td>\n",
       "      <td>0.083853</td>\n",
       "      <td>0.067959</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000060</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.000113</td>\n",
       "      <td>0.000037</td>\n",
       "      <td>0.001434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>w</th>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.000031</td>\n",
       "      <td>0.001182</td>\n",
       "      <td>0.006329</td>\n",
       "      <td>0.007711</td>\n",
       "      <td>0.016148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>0.000015</td>\n",
       "      <td>0.000037</td>\n",
       "      <td>0.000727</td>\n",
       "      <td>0.003965</td>\n",
       "      <td>0.001851</td>\n",
       "      <td>0.008614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>0.110972</td>\n",
       "      <td>0.152569</td>\n",
       "      <td>0.116828</td>\n",
       "      <td>0.077349</td>\n",
       "      <td>0.160987</td>\n",
       "      <td>0.058168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>z</th>\n",
       "      <td>0.002439</td>\n",
       "      <td>0.000659</td>\n",
       "      <td>0.000704</td>\n",
       "      <td>0.000170</td>\n",
       "      <td>0.000184</td>\n",
       "      <td>0.001831</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>26 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "sex                 F                             M                    \n",
       "year             1910      1960      2010      1910      1960      2010\n",
       "last_letter                                                            \n",
       "a            0.273390  0.341853  0.381240  0.005031  0.002440  0.014980\n",
       "b                 NaN  0.000343  0.000256  0.002116  0.001834  0.020470\n",
       "c            0.000013  0.000024  0.000538  0.002482  0.007257  0.012181\n",
       "d            0.017028  0.001844  0.001482  0.113858  0.122908  0.023387\n",
       "e            0.336941  0.215133  0.178415  0.147556  0.083853  0.067959\n",
       "...               ...       ...       ...       ...       ...       ...\n",
       "v                 NaN  0.000060  0.000117  0.000113  0.000037  0.001434\n",
       "w            0.000020  0.000031  0.001182  0.006329  0.007711  0.016148\n",
       "x            0.000015  0.000037  0.000727  0.003965  0.001851  0.008614\n",
       "y            0.110972  0.152569  0.116828  0.077349  0.160987  0.058168\n",
       "z            0.002439  0.000659  0.000704  0.000170  0.000184  0.001831\n",
       "\n",
       "[26 rows x 6 columns]"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "letter_prop"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在有了字母比例，我们可以按年份细分每种性别的条形图（见图14-8）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6aa8f4110>"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAHxCAYAAABeX6lZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde7xdZX3v+8/XQEgVRC7BAouYIFEJREEWILsWaiUQoBLrpYbWTVA8FLfZ2MOxp7i1iEF7EOxFT1M1u+aIt2aLbDF7G7mIotsqNQkggSASEM0KVDCwiSgXA7/zx5zEmcUKmcmag3XJ5/16rVfG5RnP/M2VtWa+ecYYz0hVIUmSpN56zkgXIEmSNB4ZsiRJkhpgyJIkSWqAIUuSJKkBhixJkqQGGLIkSZIaYMiStMNJMjVJJdlppGuRNH4ZsiSNOUnuTvJ4kr0Hbb+pHZ6mjkxlkvRbhixJY9VPgNOeWkkyE/idkStHkjZnyJI0Vn0OOL1jfR7w2adWkpyS5MYkG5KsTXLBljpKsnuSTye5N8m6JB9KMqG50iXtCAxZksaq64HnJzm4HYjeAny+Y/+vaIWwFwCnAO9M8vot9HUpsBE4CDgcOAF4R1OFS9oxGLIkjWVPjWbNAn4ErHtqR1VdV1WrqurJqroZ+BfguMEdJHkhcBLwF1X1q6q6D/h7YO6z8QYkjV/eWSNpLPsc8B1gGh2nCgGSHA1cBBwKTAR2AS4boo8XATsD9yZ5attzgLXNlCxpR+FIlqQxq6p+SusC+JOB/z5o9xeBpcABVbU78EkgPN1a4DFg76p6Qfvr+VV1SIOlS9oBGLIkjXVnAn9YVb8atH034IGqejTJUcCfDnVwVd0LXA38bZLnJ3lOkhcnedqpRUnaFoYsSWNaVd1ZVSuG2PWfgAVJfgmcD3zpGbo5ndYpxdXAg8CXgX17XaukHUuqaqRrkCRJGnccyZIkSWqAIUuSJKkBhixJkqQGGLIkSZIaYMiSJElqwKib8X3vvfeuqVOnjnQZkiRJW7Vy5cpfVNXkofaNupA1depUVqwYasobSZKk0SXJT7e0z9OFkiRJDTBkSZIkNcCQJUmS1IBRd02WJEka/X7zm98wMDDAo48+OtKlPCsmTZpEX18fO++8c9fHGLIkSdI2GxgYYLfddmPq1KkkGelyGlVVrF+/noGBAaZNm9b1cZ4ulCRJ2+zRRx9lr732GvcBCyAJe+211zaP2hmyJEnSdtkRAtZTtue9erpQkrZg5qUzN1tfNW/VCFUiaSxyJEuSJI1LTzzxxIi+viFLkiSNuL/+67/mYx/72Kb1973vfXz84x/nkksu4cgjj+TlL385H/jABzbtf/3rX88RRxzBIYccwqJFizZt33XXXTn//PM5+uij+f73v/+svofBugpZSWYnuT3JmiTnDbH/7CSrktyU5LtJZrS3T03ySHv7TUk+2es3IEmSxr4zzzyTSy+9FIAnn3ySJUuW8MIXvpA77riDH/zgB9x0002sXLmS73znOwAsXryYlStXsmLFCj7+8Y+zfv16AH71q19x6KGH8m//9m+8+tWvHrH3A11ck5VkArAQmAUMAMuTLK2q1R3NvlhVn2y3PxX4O2B2e9+dVXVYb8uWJEnjydSpU9lrr7248cYb+fnPf87hhx/O8uXLufrqqzn88MMBePjhh7njjjs49thj+fjHP85XvvIVANauXcsdd9zBXnvtxYQJE3jjG984km9lk24ufD8KWFNVdwEkWQLMATaFrKra0NH+eUD1skhJkjT+veMd7+Azn/kM//7v/87b3/52rr32Wt773vfy53/+55u1u+666/jGN77B97//fZ773OfyB3/wB5umV5g0aRITJkwYifKfppvThfsDazvWB9rbNpPkXUnuBC4GzunYNS3JjUm+neT3h1WtJEkat/74j/+YK6+8kuXLl3PiiSdy4oknsnjxYh5++GEA1q1bx3333cdDDz3EHnvswXOf+1x+9KMfcf31149w5UPrZiRrqIkhnjZSVVULgYVJ/hR4PzAPuBeYUlXrkxwBXJHkkEEjXyQ5CzgLYMqUKdv4FiRJ0ngwceJEXvOa1/CCF7yACRMmcMIJJ3DbbbdxzDHHAK2L2j//+c8ze/ZsPvnJT/Lyl7+cl770pbzqVa8a4cqH1k3IGgAO6FjvA+55hvZLgE8AVNVjwGPt5ZXtka6XACs6D6iqRcAigP7+fk81SpK0A3ryySe5/vrrueyyyzZte/e738273/3up7X9+te/PmQfT416jQbdnC5cDkxPMi3JRGAusLSzQZLpHaunAHe0t09uXzhPkgOB6cBdvShckiSNH6tXr+aggw7ita99LdOnT9/6AWPAVkeyqmpjkvnAVcAEYHFV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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 1, figsize=(10, 8))\n",
    "letter_prop['M'].plot(kind='bar', rot=0, ax=axes[0], title='Male')\n",
    "letter_prop['F'].plot(kind='bar', rot=0, ax=axes[1], title='Female', legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如您所见，以n结尾的男孩名字自1960年代以来经历了显着增长。回到之前创建的完整表格，我再次按年份和性别进行归一化，并为男孩的名字选择字母的子集，最后进行转置以使每个列成为一个时间序列："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [],
   "source": [
    "letter_prop = table / table.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "dny_ts = letter_prop.loc[['d', 'n', 'y'], 'M'].T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>last_letter</th>\n",
       "      <th>d</th>\n",
       "      <th>n</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1880</th>\n",
       "      <td>0.083055</td>\n",
       "      <td>0.153213</td>\n",
       "      <td>0.075760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1881</th>\n",
       "      <td>0.083247</td>\n",
       "      <td>0.153214</td>\n",
       "      <td>0.077451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1882</th>\n",
       "      <td>0.085340</td>\n",
       "      <td>0.149560</td>\n",
       "      <td>0.077537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1883</th>\n",
       "      <td>0.084066</td>\n",
       "      <td>0.151646</td>\n",
       "      <td>0.079144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1884</th>\n",
       "      <td>0.086120</td>\n",
       "      <td>0.149915</td>\n",
       "      <td>0.080405</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "last_letter         d         n         y\n",
       "year                                     \n",
       "1880         0.083055  0.153213  0.075760\n",
       "1881         0.083247  0.153214  0.077451\n",
       "1882         0.085340  0.149560  0.077537\n",
       "1883         0.084066  0.151646  0.079144\n",
       "1884         0.086120  0.149915  0.080405"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dny_ts.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有了这个时间序列的DataFrame，我可以使用其plot方法再次绘制随时间的趋势图（见图14-9）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6ad9c5350>"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAHgCAYAAACW1XhnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hUVeLG8e9JgdBCCZ0QQifUAKHYQKSLoKArKFhWFOvq6mJb69pXf6uCYkEUCyCoWFARQUSlSAlFOoReQgkESCN1zu+PixoUISGT3JnJ+3mePCEzd2begUBezj33HGOtRURERES8K8jtACIiIiKBSCVLREREpBioZImIiIgUA5UsERERkWKgkiUiIiJSDFSyRERERIpBiNsB/qh69eo2Ojra7RgiIiIiZ7R8+fJD1toap7rP50pWdHQ08fHxbscQEREROSNjzM6/uk+nC0VERESKgUqWiIiISDFQyRIREREpBj43J+tUcnJy2LNnD5mZmW5HKVZhYWFERkYSGhrqdhQREREpIr8oWXv27KFSpUpER0djjHE7TrGw1nL48GH27NlDw4YN3Y4jIiIiReQXpwszMzOJiIgI2IIFYIwhIiIi4EfrRERESgu/KFlAQBesX5WG9ygiIlJa+E3JEhEREfEnfluyKlaseFaPe/nll8nIyDjtMdHR0Rw6dOi0xzzzzDO//fro0aO89tprZ5VHREREApPflqyzVZCSVRBFLVnWWjweT5FziIiIiG/y+5KVlpZGz5496dChA23atOGLL74AID09nQEDBtCuXTtat27NtGnTGDt2LImJifTo0YMePXoU6PknTZpE586diY2N5eabbyYvL48HHniA48ePExsby/Dhw3nggQfYunUrsbGx3HvvvQC88MILdOrUibZt2/LYY48BsGPHDmJiYrjtttvo0KEDu3fvLp7fFBEREXGdXyzhcDphYWF89tlnhIeHc+jQIbp27cqgQYOYNWsWdevW5euvvwbg2LFjVK5cmRdffJF58+ZRvXr1Mz73hg0bmDZtGgsXLiQ0NJTbbruNyZMn89xzz/Hqq6+yatUqwClPa9eu/e3r2bNnk5CQwNKlS7HWMmjQIH766SeioqLYtGkTEydO1OlFERGRAOf3Jctay7///W9++ukngoKC2Lt3LwcOHKBNmzaMHj2a+++/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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dny_ts.plot(figsize=(10, 8))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 男孩名字变成女孩名字（反之亦然）\n",
    "\n",
    "另一个有趣的趋势是，在样本中，男孩的名字在某性别中较早流行，但在目前却具有“变性”。例如莱斯利（Lesley）或莱斯利（Leslie）。回到top1000 DataFrame，我计算数据集中出现的以“ lesl”开头的名称的列表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_names = pd.Series(top1000.name.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [],
   "source": [
    "lesley_like = all_names[all_names.str.lower().str.contains('lesl')]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "632     Leslie\n",
       "2294    Lesley\n",
       "4262    Leslee\n",
       "4728     Lesli\n",
       "6103     Lesly\n",
       "dtype: object"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lesley_like"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在这里，我们可以过滤掉那些名字，然后按名字对出生进行总和，以查看相对频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [],
   "source": [
    "filtered = top1000[top1000.name.isin(lesley_like)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name\n",
       "Leslee      1082\n",
       "Lesley     35022\n",
       "Lesli        929\n",
       "Leslie    370429\n",
       "Lesly      10067\n",
       "Name: births, dtype: int64"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filtered.groupby('name').births.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，让我们按性别和年份进行汇总，并在一年内进行归一化："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [],
   "source": [
    "table = filtered.pivot_table('births', index='year', columns='sex', aggfunc='sum')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "table = table.div(table.sum(1), axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>sex</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2006</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2007</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2009</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex     F   M\n",
       "year         \n",
       "2006  1.0 NaN\n",
       "2007  1.0 NaN\n",
       "2008  1.0 NaN\n",
       "2009  1.0 NaN\n",
       "2010  1.0 NaN"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "table.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后，现在可以绘制按性别划分的细分图表（图14-10）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6af3a9e90>"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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rVsXt27dgtFoLPZ9lS9fHn5+fixTRJQDyxQR2T2dTgedzjoD7TwJnYjux8N8RGTXZsyYgQkTJlhtfyEhIYiNjUVaWprV9klEto1liojs2oYNG7B//36r7S8kJARGoxExMTFW2ycR2TaLypRSqrNSKlYpFa+UCs9nvT5KKVFKhRZdRCKivMXHx1tlWoRs2Vf08VAfEWUrsEwppZwAzAXQBUBdAAOVUnXNrOcG4FUAfxR1SCIic1JTU3Hp0iWrXMmXrVq1anB3d2eZIiITS0amHgMQLyKnRCQDwAoAPcys9yGAGQDuFGE+IqI8xcfHA4BVy5ROp0PDhg1ZpojIxJIyVQVAwj2PE/99zkQp1QiAn4j8WITZiIjylZqaisDAQKse5gPuHuo7cuSIVaZjICLbZ8nUCObuHGq6NbtSSgdgNoDhBW5IqVEARgGAv7+/ZQmJiPLw5JNPIi4uzur7DQkJwa1bt3Dy5EmrFzkisj2WjEwlAvC753FVAOfveewGoD6AHUqpfwA0A7DB3EnoIrJAREJFJNTX1/fhUxNRibd371789ddfmuybJ6ET0b0sKVMHAQQppaorpVwADACwIXuhiKSIiI+IVBORagD2A+guIpHFkpiISrxNmzahffv2ePXVVzXZf926deHs7MwyRUQALChTIpIFYAyALQCOA1glIkeVUh8opboXd0Aiont9++236NGjB+rWrYuVK1dqksHV1RV16tRhmSIiABbeTkZEfgLw033PTc5j3acKH4uIKLcffvgBw4cPR7t27bB27Vq4ublpliUkJATbt2/XbP9EZDs4AzoR2Y3169ejRo0a2LRpk6ZFCrhbps6fP4/z588XvDIROTSWKSKyG4sXL8a+fftQqlQpraMgLCwMSil8/vnnWkchIo2xTBGR3VBKoUKFClrHAADUqlUL/fr1wxdffIGrV69qHYeINMQyRUR24eWXX8Zbb72ldYwcJk2ahJs3b+LTTz/VOgoRaYhliohsXnp6OpYsWYKUlBSto+Tw6KOPolevXvjss89w/fp1reMQkUZYpojI5m3fvh03b97EM888o3WUXN555x2kpKTw3CmiEoxliohs3rp16+Dm5oa2bdtqHSWXRo0a4emnn8ann36K1NRUreMQkQZYpojIphkMBqxfvx5du3a1iav4zHn33Xdx9epVzJs3T+soRKQBlikismm3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MGAAO3TowAsXLtjSFi5cSAD866+/7JbhnXfe4SOPPMJz586xYcOGfPjhh8t0LrGxsUxISCjVNlarlY8++ig/+OADWq1WZmZmFpv/9OnT7NChAwGwUaNGTEpKsq3btGkTly5dahtM+Oabb3LQoEGlPxFVYfbs2cP09HSS5OHDh7l9+3Z+9913XLNmDd9++21+8skntrzh4eG0WCx0c3NjeHg4ExMTnVVsVc2dOXOGFouFTzzxBF999VV6eXnZAvStW7cWuU1ycrJtMLKqnsoTTDmLBlPVgNVqZXh4OAHwueeeI2kEV9dffz379+9vd7uYmBg2aNCAmzZtKpCenZ3N3377rUBaUlISP/vsM2ZlZdktQ/v27dm9e3eS5Ntvv83NmzeX+jzspe/YscP2ZVqUuXPnEgAjIiIYEhLCESNGFHus7OxshoaGcuXKlfT29ubNN9/M7OxskuQ//vEPXn/99bx06RJJ8rXXXiMAHjhwoFTnoyrGO++8Q1dXV06bNs3hbf744w8+9thjrFevHgHw448/rsQSqpqsT58+tgBq0KBB3L17N318fDhy5MhCec+fP8+mTZuye/fu2nNVjWkwpcFUmcTHxxMAZ86cWSA9rzcpPj6eFy9e5K+//lrgAyAjI4MWi4UREREkjaAlJyenTGX44YcfCIDvvfdemc9jwoQJDAsLK5QeGxtb7L6XL19OABw3bhytVivnzJlDANy1a1ehvBkZGTx16lSBtLVr1zIgIIDJyck8ePAgAXDBggW29cnJyQTA559/vsznpsomPT2dXl5e7Nu3L0+fPl3q7U+cOMHFixcX26Oq6rb333+fnTp14po1a2yfj7NmzaKLiwt///33Anmfe+45W+D1/fffO6O4ygEaTGkwVSapqalcuHAhU1JSCqSfPn2aHh4enDhxIjdv3lzkOKbu3buzV69eJMktW7awefPmjIuLK/I4CQkJfP/994tcd++999LX15d///23LW3nzp2Mjo526ByOHz9ONzc3/utf/yq0zmq1skWLFhw6dGihddHR0bRYLLzjjjtsgWB6ejq9vb0L5T979ix79+7NoKCgQpc28/6fPn06XV1defz48QLru3XrpnMUOcGCBQsIgLt373Z2UVQdcvToUbq6uvLf//63LS0tLY1eXl4cNGgQr7nmGr30X41pMFWHg6kvvviC7777boXv9+WXX+b69ettE9RlZGQUWP/EE0/Q1dWVmZmZHDx4MP38/Hj+/Pki9xUREUGLxVJoPNKxY8fo6urKGTNmFEgfNGgQ27Rp41B3+Jw5cygiPHToUJHrp02bRnd390Llnz17NgMDAwsNLn7mmWcIgL/88outjAEBAXRzc+Nnn31W5DHS09MJgMOGDSu0Lu9L/dixYyWei6oY58+f59VXX80777zT2UVRddCYMWPYqFEj22fLjBkzKCKMj4/n888/b7f3WzmfBlO1JJhKS0vj0KFD7QYGRcnrOi7tbLy5ublcs2ZNidt169aNvXv3LpT+zTffEABffPFFAuD8+fPt7iMv78aNGwukp6SkcPLkyTx8+HCB9DfeeIMASmzY2dnZ9Pf355AhQ+zm2bp1KwHwo48+KrSuqFlnz507x8aNGzM0NJQHDhzg9ddfzwYNGhQqe35//vkn77jjDu7du7fQusTERI4fP75Qt7+qPMeOHeOIESPsDgRWqjLFxMQQAJcsWcLk5GTWq1ePDzzwAEnjh1ejRo04atQoJ5dSFUWDqVoQTF28eJH9+/enu7s7t27dyrNnz5a4zZkzZ2zB1JIlS0p1vLw3fHEDbPfv308AfOqppwqty8rK4uzZs9mjRw96enoyLS3N7n4yMjLo4uJS5H6KkpKSQgB89tlni823atUqAuCGDRvs5rl8+TKbNGnCMWPGkCR37dplu53ZntjYWP7999/s168f/fz8GBsb61C5lVKKJHv16sXWrVtz/PjxdHd3L3AndN64qtL8aFZVQ4OpGh5MWa1WTpgwgQD4wQcfcPz48Wzfvn2J2+Xk5PCnn36iv78/O3fuXKpjPvvssyVOWZAXrMTExBS5Pjk5mRaLhdOnTy/xeEFBQRwwYABJo1dswoQJdsdYkcaYrLw7/OxJSUnhiy++WOLlwPj4eF64cIG5ubns0qULmzdv7tCzkI4ePVohH3hWq5VxcXGFLjWqwg4fPlyuu522bNnCgwcPVmCJlCq9Tz/91PZD98q7SY8fP8569epx4sSJTiqdsqc6BFMuLi7s0qWL7ZU/EC+KBlP55N3pMWfOHJLGJF4AHP4i3717d6nH5Nx+++0MCAgoMd+JEyfsrrNarYyKiio0gL0oU6ZMYaNGjXjp0iXOmjWLAOwOSieNYK9BgwaFeuhycnK4fv16rl27tsRjXmnRokWF5tCqCnv37iUAvv7661V63JombyLEZ555plTbJSQkcOvWrczNzeWNN97IW265pZJKqJRjcnNz2aJFCzZs2LDQXcAkOWnSJLq7uzM1NdUJpVP2VIdgytPTs1T5NZgy5eTksEePHhwzZoztF/mRI0ds45GK8/rrr3PLli2lPuaFCxfo4eHBqVOnlqnMZXHy5ElmZmYyKiqKAEr8VZaRkWGb/HPBggUcNmwYw8PDec011xAA+/btW6rjT58+nQA4dOhQp8zzcvPNNzMgIEDnmLEjIyODTZo0oYuLC3v06FHorskr/f7773zqqaeYlZVlmyutSZMmTgmWlSpKTEyM3TnzDh8+TBcXF7Zq1YoPPvggX3vtNcbExNjmqKtMefMLhoSElPg+I40xiOPGjeObb77Jy5cvV3r5nEmDqRocTJHG3Uf5Zw0nyS5durBPnz52t8nOzma9evVst+DGxsYyJCTEoTl1tmzZQgBcv359+QpeSkeOHKGPjw8DAwMLnW9xnn76aXbs2JGNGjXi8OHDuW7dulLPazV69GgC4JEjR0pb7Arx1ltvFbhLsKZYvXo1hwwZUmJXc3lNnz6dIsLvvvvOoUuwI0aMYP369Xn06FFmZWVxxYoVvO222xgcHFzrP/BV7fDRRx/xrrvusv1ABMDAwEBu27atUo+bN3zDkXGpkZGRbNy4MUWEABgcHFzoZpq0tDRGR0c79L6t7q4MTPr161fo9d///pek8b1d1PoVK1aQJE+dOlVonSPyX+YbPnx4qctM1uFgqihPPfUUXVxciuwiJslt27YRACMjI0mScXFxtkfClMRqtfLAgQN2ZyWvLA899BABFLp7rypkZWXxzz//rPLj5snIyKCnp2eRk4tWZw888AABsHHjxnbvaDx//jxXrFjBnj17ct++fSSNnkhHfvWSxiWRW2+9lZMmTbKlnTlzhsuXLy8y/4YNGwpNkKpUTWW1WpmcnMx3332XTZs2tT3ftDImjE1OTqaXlxd79+7Ne+65h25uboyPjy+ULzMz09bj27VrVyYmJvLtt99mw4YN6enpyZdffpkvvfQS+/XrZ3smalkfA1adVIdgSnumKtihQ4f44Ycf2p276YUXXig0gLxnz5686aabqu2lpJ9//tnuYPa64KGHHuK1115b5tninSUuLo4dO3aki4sLFy5cSKvVygsXLnDVqlWcMGECvb29CYDt2rXj999/T6vVyn79+jEwMJA7duxw6BiXLl0q0NbnzZtHAFy3bl2BfDk5OWzfvj1bt25dqt5NpWqCzMxMPvHEE3Rzc6OXlxdHjhzJuXPnMjIysty9w5cvX+btt99OT09PJiUl8eTJk/Tz82NQUFCBz6SYmBjeeOONFBE++eSTBXqc8qaByevZCggIYEREBB955BEC4NKlS8tVRmfTy3y1MJgqyd133822bdsWSFuxYgUBFPtsu8zMTI4bN05v93eCEydOlPgg5epi2bJlBd6kmZmZHDVqFFu0aMGzZ8/y4sWLvOqqq+jj48PQ0FBu2bLFFsRbrVZ+/vnntjFQs2bNsttLtW3btiJ7X7OzsxkYGMjGjRvz1Vdftd0IsXjx4iKDLKVqk8TERIaGhtqCmrzg5fHHHy9yXFVWVhajoqK4bt06RkVFMTo6mtu3b7c9N5Q0xtheGfBERkbabn7Kzc3lvHnzaLFY2KJFC7vjca1WK3/88ccCl/suXbrEkJAQurm5lTj1THWmwVQtDaZSUlK4aNGiAo9aydO2bVtOmDChQNr58+fp7e1d5Ezceb7++usiJ9BUVcdqtVbb3kPSCHBcXFwKddtbrdYCdx8lJSUVOz4pPT3ddqmgf//+PHnyZIF9RUZG0s/PjyEhIUVuf+DAAQYGBhIAXVxcuGPHDu7du5ezZs2q1vWnVEXKyspiTEwMJ0+eTAAcMmRIgWlWvv76a7Zs2dIWcOV/eXh4MDg4mP/5z3941VVX8c477yz03hk7dixdXV3ZrVs3AmBoaKhD8xxe6cyZM2zdujWbNGlSY+9S1GCqlgZTeTOHf/nll4XWXb58udCjUEjjl/sbb7xh98vm8ccfp7u7u93Lh6py7du3j506dXL48ldpHTp0iOHh4dy5cydJo4fH0QHZn3zyCT/66CO2bt2arVq1qrB5sd577z126dKF6enptFqtXLt2rS1IatOmDffv31/s9gkJCZw/f77DY7CUqq3efPNNWiwWduzYkdu3b+d9991HAGzfvj2joqIYGxvLmJgY/vzzz/z88885depUBgYGUkTo6+tb5BQ6Z86c4XXXXcdGjRrxgw8+KFf54uPjWb9+fXbr1o0RERF87LHHGBoayrvuuqvAa9KkScVOu+Ms1SGYKi0NphyQnZ3Nhg0b8qGHHqqwfQYGBrJ///4Vtj9VOhkZGaxfvz7Dw8PLtH1SUhK7d+/OTp06FQhCMjIyOHPmTLq5udHV1ZUHDhwgSS5dupReXl5F3rlptVq5ePFiW9DUqlUrAqCrqyt/+umnMpXPnrxLE2vWrCEA3nDDDVy5cqUGSEqV0qZNm+jj40MAdHd357x58wpczivKmTNnCvQMXyk1NbXCBrx/+umn9PDwoIuLC319fdm6dWt26dKFQUFBtle9evXo5+dXZEeBM2kwVUuDKZIcNWoUr776ah4/ftyWFhERwZkzZxa73fLlyzlv3rwCafPnzycALlq0qFLKqhwTHh5ODw8PLlu2rFS38f/www/09fWlr68vg4ODbeOvVq9eTX9/f4oIw8LCCrSVbdu2MTAwkA0bNmRiYmKB/eVN17Bs2TKSxpiuX3/91aFJWMsqJyeHH374oQZRSpXDwYMHOXXqVNuPpurm4sWLxX627d+/n507dyYATp48ucrvLLdHg6laHEzt2LGDnp6ebN++vW0OqRtuuIEjRowodruHH36YFouFe/bssaV9++23fPTRR6tkYjhl39GjR9mnTx8CYK9evRy6u2/58uV0dXVlu3btmJSUVGBd79692atXL9ulvSslJyfTz8+P7dq1s10aPnjwIOvXr8+BAwfqvExKqSqXnZ3NGTNmUEQYEBBQLR63pcFULQ6mSGOSzbCwMObm5jI1NZUA+NJLLxW7TVpaGv39/XnLLbdw06ZNVVRS5Sir1cpVq1Zx9uzZJI1u9uDgYHbq1InXXnstfXx82Lx5c9tcS6tXr2ZISAjT09OL3FdJvv/+e7q4uPCf//wnc3Jy2L17d/r4+FRqL5RSSpXkq6++osVi4fDhw53+w64uBFOuqMP69u2Lvn37AgDWrFkDALjtttuK3cbX1xevvPIK7r//fgwcOBD79u1Dx44dK72syjEiggceeMD2/1VXXYWcnBzceOON6NmzJzw8PJCVlYVmzZoBAEaPHo377rsPIlLkvkoSHByM1157DS1btsQLL7yAHTt24JNPPkHTpk0r7qSUUqqUBg8ejJdeegnTpk3DggULMHv2bGcXqVar08FUHqvViilTpgAAgoKCSsw/ZswYxMXF4aabbtJAqprz9vbGTz/9VGweR4Km4jz66KMAgE6dOsHd3R2jRo0q1/6UUqoiTJkyBbGxsZgzZw6CgoIwdOhQZxep1nJxdgGqAxcXF+zevRvR0dFwc3MrMb+IYOHChQgLC6uC0qmaokWLFpg5c6azi6GUUgCM76qlS5ciMDAQ999/Pw4dOuTsIjnNlVctLl26BD8/vwoLMDWYMgUFBSEkJMTZxVBKKaUqTP369REZGQk3NzcEBwfj448/NgZM1zGenp7Yv38/Lly4AADYuHFjhQ7H0GBKKaWUqsVatmyJb7/9Fv7+/hgzZgz69euHPXv2OLtYVe7OO+/EV199BQBYvXo1xowZU2H71jFTSimlVC3XtWtXxMbGYvny5YiIiEDXrl3x2GOP4dVXXy33uNHSmDZtGvbu3Vuh+wwMDMTixYtLzDd69GjMmzcPQ4cORXx8PMLCwrB169YKKYP2TCmllFJ1gMViwcSJE3Ho0CFMmTIFDRo0qNJAytk6d+6MI0eOYPXq1Rg8eHCF7lt7ppRSSqk6xMfHx6GenMrgrOPmufvuuzFjxgxs3rwZaWlpFbZfDaaUUkopVSeEhYXBy8sLAQEB2Lx5c4XtVy/zKaWUUqpOaNasGaZOnVrh+9WeKaWUUkrVallZWYXS+vfvj/79+1fI/rVnSimllFKqHDSYUkoppZQqBw2mlFJKKaXKQYMppZRSSlWqmvQIm7KU1aFgSkRCROSgiCSJyKwi1tcTkU/M9TEi0rLUJVFKKaVUrePh4YG0tLQaEVCRRFpaGjw8PEq1XYl384mIBcB/AQwEkAJgp4isJ/lrvmzhAM6SvFFERgNYCOC+UpVEKaWUUrVOs2bNkJKSglOnTjm7KA7x8PBAs2bNSrWNI1MjdAeQRPJ3ABCRjwEMA5A/mBoG4GlzeQ2A10VEWBPCUKWUUkpVGjc3N7Rq1crZxahUjlzmawrgaL7/U8y0IvOQvAQgA0DjK3ckIhNFJFZEYmtKhKqUUkopVRxHgqminoJ4ZY+TI3lAchnJbiS7+fn5OVI+pZRSSqlqzZFgKgVA83z/NwOQai+PiLgC8AJwpiIKqJRSSilVnTkyZmongDYi0grAMQCjAYRekWc9gHEAtgP4J4DvSxovtWvXrtMi8mfpi1wqVwM4XcnHqI203spO665stN7KRuutbLTeyqau19v19laUGEyRvCQi/wfAtwAsAN4lmSAi8wDEklwPYDmA90UkCUaP1GgH9lvp1/lEJJZkt8o+Tm2j9VZ2Wndlo/VWNlpvZaP1VjZab/Y59KBjkl8D+PqKtKfyLWcDuLdii6aUUkopVf3pDOhKKaWUUuVQ24OpZc4uQA2l9VZ2Wndlo/VWNlpvZaP1VjZab3aIzquplFJKKVV2tb1nSimllFKqUtW4YEpE3hWRkyKyP19aoIj8IiJ7zRnWu5vpXiLypYjEiUiCiEzIt804ETlsvsY541yqkp166yIi20Vkn1lPjfKte9J8cPVBEbkjX3qxD72ubUpTbyIyUER2mem7RGRAvm26mulJIvKqiBQ10W2tUdr2Zq5vISJZIjIjX5q2t+Lfp53NdQnmeg8zXdub/fepm4isNNMTReTJfNvUtfbWXER+MOshQUSmmum+IrLR/H7cKCI+ZrqY7SlJROJF5OZ8+6pT36mFkKxRLwB9AdwMYH++tA0A7jSXBwPYbC7/B8BCc9kPxrQN7gB8Afxu/vUxl32cfW5OqLedAPqZy2EA5pvLHQDEAagHoBWA32BMi2Exl1ub9RgHoIOzz60a1VsQgOvM5U4AjuXbZgeAW2E8LSA6r73W1ldp6i3f+s8BfAZghvm/trfi25srgHgAXcz/GwOwaHsrsd5CAXxsLtcHcARAyzra3poAuNlcbgjgkPn5/wKAWWb6LPzve3Sw2Z4EQE8AMWZ6nftOvfJV43qmSP6IwrOrE0DerzUv/G+GdgJoaP4qa2BudwnAHQA2kjxD8iyAjQBCKrvszmSn3m4C8KO5vBHASHN5GIwPm4sk/wCQBOOB17aHXpPMAZD30OtaqzT1RnIPyby2lwDAQ0TqiUgTAI1IbqfxybMKwPDKL73zlLK9QUSGw/gATsiXX9ubwV69DQIQTzLO3DaN5GVtbzb26o0APMV4WsdVAHIAnEPdbG/HSe42lzMBJMJ41u4wACvNbCvxv/YzDMAqGn4B4G22tzr3nXqlGhdM2TENwIsichTAIgB53bavA2gPI7jaB2AqSSsce3hzXbAfwN3m8r3432OD7NWP1pvBXr3lNxLAHpIXYdRRSr51Wm/56k1EPAE8AWDuFfm1vRnstbe2ACgi34rIbhH5v2a6tjeDvXpbA+A8gOMAkgEsInkGdby9iUhLGL3rMQCuIXkcMAIuAP5mNv1usKO2BFOPAJhOsjmA6TBmZAeMaHkvgOsABAJ43bxu7tCDmeuAMACPicguGF28OWa6vfrRejPYqzcAgIh0BLAQwKS8pCL2ofX2v3qbC+AVkllX5Nd6M9irN1cAtwG43/w7QkT+Aa23PPbqrTuAyzC+F1oBeFxEWqMO15uINIBxmX0ayXPFZS0iTb8b4OAM6DXAOABTzeXPALxjLk8A8LzZ1Z0kIn8AaAcjau6fb/tmADZXSUmrEZIHYFwqgIi0BTDEXFXcw61Leuh1rVdMvUFEmgH4AsCDJH8zk1Ng1FUerbeC9dYDwD9F5AUA3gCsIpINYBe0vZX0Pt1C8rS57msY44Y+gLa34uotFMA3JHMBnBSRbQC6wehZqXPtTUTcYARSH5KMNJP/EpEmJI+bl/FOmun2vhvq/HdqbemZSgXQz1weAOCwuZwM4B8AICLXwLiG/juM5wwOEhEf8y6FQWZanSIi/uZfFwD/D8Bb5qr1AEab431aAWgDY0Cr7aHXIuIO4xmM66u+5M5lr95ExBvAVwCeJLktL7/ZTZ4pIj3N8XsPAlhX5QV3Mnv1RrIPyZYkWwJYDOBZkq9D2xuAYt+n3wLoLCL1zfE//QD8qu3NUEy9JQMYYN6Z5gljIPUB1MH2ZraP5QASSb6cb9V6GJ0UMP+uy5f+oFl3PQFkmO1Nv1OdPQK+tC8Aq2Fc686FEQ2Hw+ji3gXj7osYAF0ashdnAAACmElEQVTNvNfBuNNvH4zr52Pz7ScMxsDqJAATnH1eTqq3qTDu3jgE4HmYk7ia+SNg3NlyEPnuBIJxN8chc12Es8+rOtUbjA/s8zAuLee9/M113cw2+BuMsXzirHOqbvV2xXZPw7ybT9ubQ+/TsTAG7e8H8EK+dG1v9t+nDWBcwUgA8CuAmXW4vd0G43JcfL7PrMEw7gz9DkbHxHcAfM38AuC/Zv3sA9At377q1HfqlS+dAV0ppZRSqhxqy2U+pZRSSimn0GBKKaWUUqocNJhSSimllCoHDaaUUkoppcpBgymllFJKqXLQYEoppZRSqhw0mFJK1UkiYnF2GZRStYMGU0qpak9E5ovI1Hz/LxCRKSIyU0R2iki8iMzNt36tiOwSkQQRmZgvPUtE5olIDIBbq/g0lFK1lAZTSqmaYDnMx1uYjwcZDeAvGI866g7jQeZdRaSvmT+MZFcYM4FPEZHGZrongP0ke5D8qSpPQClVe9WWBx0rpWoxkkdEJE1EggBcA2APgFtgPANsj5mtAYzg6kcYAdQIM725mZ4G4DKMh7oqpVSF0WBKKVVTvANgPIBrAbwL4yHmz5Fcmj+TiPQHcDuAW0n+LSKbAXiYq7NJXq6qAiul6ga9zKeUqim+ABACo0fqW/MVJiINAEBEmoqIPwAvAGfNQKodgJ7OKrBSqm7QnimlVI1AMkdEfgCQbvYubRCR9gC2iwgAZAEYC+AbAJNFJB7AQQC/OKvMSqm6QUg6uwxKKVUic+D5bgD3kjzs7PIopVQevcynlKr2RKQDgCQA32kgpZSqbrRnSimllFKqHLRnSimllFKqHDSYUkoppZQqBw2mlFJKKaXKQYMppZRSSqly0GBKKaWUUqocNJhSSimllCqH/w+7b02EDvqnsAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "table.plot(style={'M': 'k-', 'F': 'k--'}, figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 14.4 美国食品数据库\n",
    "\n",
    "美国农业部提供了食品营养信息数据库。程序员Ashley Williams以JSON格式提供了此数据库的版本。记录如下所示：\n",
    "\n",
    "```json\n",
    "    {\n",
    "        \"id\": 21441,\n",
    "        \"description\": \"KENTUCKY FRIED CHICKEN, Fried Chicken, EXTRA CRISPY, Wing, meat and skin with breading\",\n",
    "        \"tags\": [\"KFC\"],\n",
    "        \"manufacturer\": \"Kentucky Fried Chicken\",\n",
    "        \"group\": \"Fast Foods\",\n",
    "        \"portions\": [\n",
    "            {\n",
    "                \"amount\": 1,\n",
    "                \"unit\": \"wing, with skin\",\n",
    "                \"grams\": 68.0\n",
    "            },\n",
    "            ...\n",
    "        ],\n",
    "        \"nutrients\": [\n",
    "            {\n",
    "                \"value\": 20.8,\n",
    "                \"units\": \"g\",\n",
    "                \"description\": \"Protein\",\n",
    "                \"group\": \"Composition\"\n",
    "            },\n",
    "        ...\n",
    "        ]\n",
    "    }\n",
    "```\n",
    "\n",
    "每种食物都有许多识别属性，以及营养成分和份量的两个清单。这种形式的数据不是特别适合分析，因此我们需要做一些工作将数据整理成更好的形式。\n",
    "\n",
    "从链接下载并提取数据后，您可以使用所选的任何JSON库将其加载到Python中。我将使用内置的Python json模块："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6636"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "db = json.load(open('datasets/usda_food/database.json'))\n",
    "len(db)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "db中的每个条目都是一个dict，包含单个食物的所有数据。“营养素”字段是字典列表，每种营养素一个："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['id', 'description', 'tags', 'manufacturer', 'group', 'portions', 'nutrients'])"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "db[0].keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'value': 25.18,\n",
       " 'units': 'g',\n",
       " 'description': 'Protein',\n",
       " 'group': 'Composition'}"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "db[0]['nutrients'][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [],
   "source": [
    "nutrients = pd.DataFrame(db[0]['nutrients'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>value</th>\n",
       "      <th>units</th>\n",
       "      <th>description</th>\n",
       "      <th>group</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25.18</td>\n",
       "      <td>g</td>\n",
       "      <td>Protein</td>\n",
       "      <td>Composition</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>29.20</td>\n",
       "      <td>g</td>\n",
       "      <td>Total lipid (fat)</td>\n",
       "      <td>Composition</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.06</td>\n",
       "      <td>g</td>\n",
       "      <td>Carbohydrate, by difference</td>\n",
       "      <td>Composition</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.28</td>\n",
       "      <td>g</td>\n",
       "      <td>Ash</td>\n",
       "      <td>Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>376.00</td>\n",
       "      <td>kcal</td>\n",
       "      <td>Energy</td>\n",
       "      <td>Energy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>39.28</td>\n",
       "      <td>g</td>\n",
       "      <td>Water</td>\n",
       "      <td>Composition</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1573.00</td>\n",
       "      <td>kJ</td>\n",
       "      <td>Energy</td>\n",
       "      <td>Energy</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     value units                  description        group\n",
       "0    25.18     g                      Protein  Composition\n",
       "1    29.20     g            Total lipid (fat)  Composition\n",
       "2     3.06     g  Carbohydrate, by difference  Composition\n",
       "3     3.28     g                          Ash        Other\n",
       "4   376.00  kcal                       Energy       Energy\n",
       "5    39.28     g                        Water  Composition\n",
       "6  1573.00    kJ                       Energy       Energy"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nutrients[:7]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将字典列表转换为DataFrame时，我们可以指定要提取的字段列表。我们将获取食物名称，组，ID和制造商："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [],
   "source": [
    "info_keys = ['description', 'group', 'id', 'manufacturer']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [],
   "source": [
    "info = pd.DataFrame(db, columns=info_keys)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>description</th>\n",
       "      <th>group</th>\n",
       "      <th>id</th>\n",
       "      <th>manufacturer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Cheese, caraway</td>\n",
       "      <td>Dairy and Egg Products</td>\n",
       "      <td>1008</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cheese, cheddar</td>\n",
       "      <td>Dairy and Egg Products</td>\n",
       "      <td>1009</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Cheese, edam</td>\n",
       "      <td>Dairy and Egg Products</td>\n",
       "      <td>1018</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Cheese, feta</td>\n",
       "      <td>Dairy and Egg Products</td>\n",
       "      <td>1019</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Cheese, mozzarella, part skim milk</td>\n",
       "      <td>Dairy and Egg Products</td>\n",
       "      <td>1028</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          description                   group    id  \\\n",
       "0                     Cheese, caraway  Dairy and Egg Products  1008   \n",
       "1                     Cheese, cheddar  Dairy and Egg Products  1009   \n",
       "2                        Cheese, edam  Dairy and Egg Products  1018   \n",
       "3                        Cheese, feta  Dairy and Egg Products  1019   \n",
       "4  Cheese, mozzarella, part skim milk  Dairy and Egg Products  1028   \n",
       "\n",
       "  manufacturer  \n",
       "0               \n",
       "1               \n",
       "2               \n",
       "3               \n",
       "4               "
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "info[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 6636 entries, 0 to 6635\n",
      "Data columns (total 4 columns):\n",
      " #   Column        Non-Null Count  Dtype \n",
      "---  ------        --------------  ----- \n",
      " 0   description   6636 non-null   object\n",
      " 1   group         6636 non-null   object\n",
      " 2   id            6636 non-null   int64 \n",
      " 3   manufacturer  5195 non-null   object\n",
      "dtypes: int64(1), object(3)\n",
      "memory usage: 207.5+ KB\n"
     ]
    }
   ],
   "source": [
    "info.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可以看到带有value_counts的食物组的分布："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Vegetables and Vegetable Products    812\n",
       "Beef Products                        618\n",
       "Baked Products                       496\n",
       "Breakfast Cereals                    403\n",
       "Fast Foods                           365\n",
       "Legumes and Legume Products          365\n",
       "Lamb, Veal, and Game Products        345\n",
       "Sweets                               341\n",
       "Fruits and Fruit Juices              328\n",
       "Pork Products                        328\n",
       "Name: group, dtype: int64"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.value_counts(info.group)[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，要对所有营养素数据进行一些分析，最简单的方法是将每种食物的营养素组合到一张表上。为此，我们需要采取几个步骤。首先，我将食物营养素的每个列表转换为一个DataFrame，为食物ID添加一列，然后将DataFrame附加到列表中。然后，可以将这些与concat串联在一起："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "nutrients = []\n",
    "for x in db:\n",
    "    nutrient = pd.DataFrame(x['nutrients'])\n",
    "    nutrient['id'] = x['id']\n",
    "    nutrients.append(nutrient)\n",
    "\n",
    "nutrients = pd.concat(nutrients, ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果一切顺利，营养素应如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>value</th>\n",
       "      <th>units</th>\n",
       "      <th>description</th>\n",
       "      <th>group</th>\n",
       "      <th>id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25.180</td>\n",
       "      <td>g</td>\n",
       "      <td>Protein</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>29.200</td>\n",
       "      <td>g</td>\n",
       "      <td>Total lipid (fat)</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.060</td>\n",
       "      <td>g</td>\n",
       "      <td>Carbohydrate, by difference</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.280</td>\n",
       "      <td>g</td>\n",
       "      <td>Ash</td>\n",
       "      <td>Other</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>376.000</td>\n",
       "      <td>kcal</td>\n",
       "      <td>Energy</td>\n",
       "      <td>Energy</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389350</th>\n",
       "      <td>0.000</td>\n",
       "      <td>mcg</td>\n",
       "      <td>Vitamin B-12, added</td>\n",
       "      <td>Vitamins</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389351</th>\n",
       "      <td>0.000</td>\n",
       "      <td>mg</td>\n",
       "      <td>Cholesterol</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389352</th>\n",
       "      <td>0.072</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total saturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389353</th>\n",
       "      <td>0.028</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total monounsaturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389354</th>\n",
       "      <td>0.041</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total polyunsaturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>389355 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          value units                         description        group     id\n",
       "0        25.180     g                             Protein  Composition   1008\n",
       "1        29.200     g                   Total lipid (fat)  Composition   1008\n",
       "2         3.060     g         Carbohydrate, by difference  Composition   1008\n",
       "3         3.280     g                                 Ash        Other   1008\n",
       "4       376.000  kcal                              Energy       Energy   1008\n",
       "...         ...   ...                                 ...          ...    ...\n",
       "389350    0.000   mcg                 Vitamin B-12, added     Vitamins  43546\n",
       "389351    0.000    mg                         Cholesterol        Other  43546\n",
       "389352    0.072     g        Fatty acids, total saturated        Other  43546\n",
       "389353    0.028     g  Fatty acids, total monounsaturated        Other  43546\n",
       "389354    0.041     g  Fatty acids, total polyunsaturated        Other  43546\n",
       "\n",
       "[389355 rows x 5 columns]"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nutrients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我注意到此DataFrame中存在重复项，因此可以轻松删除它们："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14179"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nutrients.duplicated().sum()   # number of duplicates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [],
   "source": [
    "nutrients = nutrients.drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于'group'和'description'都在两个DataFrame对象中，为了清楚起见，我们可以重命名："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_mapping = {'description': 'food',\n",
    "               'group': 'fgroup'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [],
   "source": [
    "info = info.rename(columns=col_mapping, copy=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 6636 entries, 0 to 6635\n",
      "Data columns (total 4 columns):\n",
      " #   Column        Non-Null Count  Dtype \n",
      "---  ------        --------------  ----- \n",
      " 0   food          6636 non-null   object\n",
      " 1   fgroup        6636 non-null   object\n",
      " 2   id            6636 non-null   int64 \n",
      " 3   manufacturer  5195 non-null   object\n",
      "dtypes: int64(1), object(3)\n",
      "memory usage: 207.5+ KB\n"
     ]
    }
   ],
   "source": [
    "info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_mapping = {'description': 'nutrient',\n",
    "               'group': 'nutgroup'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [],
   "source": [
    "nutrients = nutrients.rename(columns=col_mapping, copy=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>value</th>\n",
       "      <th>units</th>\n",
       "      <th>nutrient</th>\n",
       "      <th>nutgroup</th>\n",
       "      <th>id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25.180</td>\n",
       "      <td>g</td>\n",
       "      <td>Protein</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>29.200</td>\n",
       "      <td>g</td>\n",
       "      <td>Total lipid (fat)</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.060</td>\n",
       "      <td>g</td>\n",
       "      <td>Carbohydrate, by difference</td>\n",
       "      <td>Composition</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.280</td>\n",
       "      <td>g</td>\n",
       "      <td>Ash</td>\n",
       "      <td>Other</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>376.000</td>\n",
       "      <td>kcal</td>\n",
       "      <td>Energy</td>\n",
       "      <td>Energy</td>\n",
       "      <td>1008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389350</th>\n",
       "      <td>0.000</td>\n",
       "      <td>mcg</td>\n",
       "      <td>Vitamin B-12, added</td>\n",
       "      <td>Vitamins</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389351</th>\n",
       "      <td>0.000</td>\n",
       "      <td>mg</td>\n",
       "      <td>Cholesterol</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389352</th>\n",
       "      <td>0.072</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total saturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389353</th>\n",
       "      <td>0.028</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total monounsaturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389354</th>\n",
       "      <td>0.041</td>\n",
       "      <td>g</td>\n",
       "      <td>Fatty acids, total polyunsaturated</td>\n",
       "      <td>Other</td>\n",
       "      <td>43546</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>375176 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          value units                            nutrient     nutgroup     id\n",
       "0        25.180     g                             Protein  Composition   1008\n",
       "1        29.200     g                   Total lipid (fat)  Composition   1008\n",
       "2         3.060     g         Carbohydrate, by difference  Composition   1008\n",
       "3         3.280     g                                 Ash        Other   1008\n",
       "4       376.000  kcal                              Energy       Energy   1008\n",
       "...         ...   ...                                 ...          ...    ...\n",
       "389350    0.000   mcg                 Vitamin B-12, added     Vitamins  43546\n",
       "389351    0.000    mg                         Cholesterol        Other  43546\n",
       "389352    0.072     g        Fatty acids, total saturated        Other  43546\n",
       "389353    0.028     g  Fatty acids, total monounsaturated        Other  43546\n",
       "389354    0.041     g  Fatty acids, total polyunsaturated        Other  43546\n",
       "\n",
       "[375176 rows x 5 columns]"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nutrients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "完成所有这些操作后，我们准备将信息与营养合并："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [],
   "source": [
    "ndata = pd.merge(nutrients, info, on='id', how='outer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 375176 entries, 0 to 375175\n",
      "Data columns (total 8 columns):\n",
      " #   Column        Non-Null Count   Dtype  \n",
      "---  ------        --------------   -----  \n",
      " 0   value         375176 non-null  float64\n",
      " 1   units         375176 non-null  object \n",
      " 2   nutrient      375176 non-null  object \n",
      " 3   nutgroup      375176 non-null  object \n",
      " 4   id            375176 non-null  int64  \n",
      " 5   food          375176 non-null  object \n",
      " 6   fgroup        375176 non-null  object \n",
      " 7   manufacturer  293054 non-null  object \n",
      "dtypes: float64(1), int64(1), object(6)\n",
      "memory usage: 25.8+ MB\n"
     ]
    }
   ],
   "source": [
    "ndata.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "value                                             0.04\n",
       "units                                                g\n",
       "nutrient                                       Glycine\n",
       "nutgroup                                   Amino Acids\n",
       "id                                                6158\n",
       "food            Soup, tomato bisque, canned, condensed\n",
       "fgroup                      Soups, Sauces, and Gravies\n",
       "manufacturer                                          \n",
       "Name: 30000, dtype: object"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ndata.iloc[30000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，我们可以按食物组和营养素类型绘制中间值图（见图14-11）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = ndata.groupby(['nutrient', 'fgroup'])['value'].quantile(0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "nutrient          fgroup                           \n",
       "Adjusted Protein  Sweets                               12.900\n",
       "                  Vegetables and Vegetable Products     2.180\n",
       "Alanine           Baby Foods                            0.085\n",
       "                  Baked Products                        0.248\n",
       "                  Beef Products                         1.550\n",
       "                                                        ...  \n",
       "Zinc, Zn          Snacks                                1.470\n",
       "                  Soups, Sauces, and Gravies            0.200\n",
       "                  Spices and Herbs                      2.750\n",
       "                  Sweets                                0.360\n",
       "                  Vegetables and Vegetable Products     0.330\n",
       "Name: value, Length: 2246, dtype: float64"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff6d5051d10>"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "result['Zinc, Zn'].sort_values().plot(kind='barh', figsize=(12,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "稍微聪明一点，您就可以发现每种营养素中哪种食物密度最高："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [],
   "source": [
    "by_nutrient = ndata.groupby(['nutgroup', 'nutrient'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [],
   "source": [
    "get_maximum = lambda x: x.loc[x.value.idxmax()]\n",
    "get_minimum = lambda x: x.loc[x.value.idxmin()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "metadata": {},
   "outputs": [],
   "source": [
    "max_foods = by_nutrient.apply(get_maximum)[['value', 'food']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [],
   "source": [
    "max_foods.food = max_foods.food.str[:50]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果DataFrame太大了，无法在书中显示； 这只是“氨基酸”营养素组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "nutrient\n",
       "Alanine                          Gelatins, dry powder, unsweetened\n",
       "Arginine                              Seeds, sesame flour, low-fat\n",
       "Aspartic acid                                  Soy protein isolate\n",
       "Cystine               Seeds, cottonseed flour, low fat (glandless)\n",
       "Glutamic acid                                  Soy protein isolate\n",
       "                                       ...                        \n",
       "Serine           Soy protein isolate, PROTEIN TECHNOLOGIES INTE...\n",
       "Threonine        Soy protein isolate, PROTEIN TECHNOLOGIES INTE...\n",
       "Tryptophan        Sea lion, Steller, meat with fat (Alaska Native)\n",
       "Tyrosine         Soy protein isolate, PROTEIN TECHNOLOGIES INTE...\n",
       "Valine           Soy protein isolate, PROTEIN TECHNOLOGIES INTE...\n",
       "Name: food, Length: 19, dtype: object"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_foods.loc['Amino Acids']['food']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 14.5 2012年联邦选举委员会数据库\n",
    "\n",
    "美国联邦选举委员会发布有关政治竞选活动的数据。 这包括供款人姓名，职业和雇主，地址和供款金额。 一个有趣的数据集来自2012年美国总统大选。 我在2012年6月下载的数据集的一个版本是一个150 MB的CSV文件P00000001-ALL.csv（请参见本书的数据存储库），该文件可以与pandas.read_csv一起加载："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/gaussic/opt/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3058: DtypeWarning: Columns (6) have mixed types.Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    }
   ],
   "source": [
    "fec = pd.read_csv('datasets/fec/P00000001-ALL.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1001731 entries, 0 to 1001730\n",
      "Data columns (total 16 columns):\n",
      " #   Column             Non-Null Count    Dtype  \n",
      "---  ------             --------------    -----  \n",
      " 0   cmte_id            1001731 non-null  object \n",
      " 1   cand_id            1001731 non-null  object \n",
      " 2   cand_nm            1001731 non-null  object \n",
      " 3   contbr_nm          1001731 non-null  object \n",
      " 4   contbr_city        1001712 non-null  object \n",
      " 5   contbr_st          1001727 non-null  object \n",
      " 6   contbr_zip         1001620 non-null  object \n",
      " 7   contbr_employer    988002 non-null   object \n",
      " 8   contbr_occupation  993301 non-null   object \n",
      " 9   contb_receipt_amt  1001731 non-null  float64\n",
      " 10  contb_receipt_dt   1001731 non-null  object \n",
      " 11  receipt_desc       14166 non-null    object \n",
      " 12  memo_cd            92482 non-null    object \n",
      " 13  memo_text          97770 non-null    object \n",
      " 14  form_tp            1001731 non-null  object \n",
      " 15  file_num           1001731 non-null  int64  \n",
      "dtypes: float64(1), int64(1), object(14)\n",
      "memory usage: 122.3+ MB\n"
     ]
    }
   ],
   "source": [
    "fec.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "DataFrame中的示例记录如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cmte_id             C00431445\n",
       "cand_id             P80003338\n",
       "cand_nm         Obama, Barack\n",
       "contbr_nm         ELLMAN, IRA\n",
       "contbr_city             TEMPE\n",
       "                    ...      \n",
       "receipt_desc              NaN\n",
       "memo_cd                   NaN\n",
       "memo_text                 NaN\n",
       "form_tp                 SA17A\n",
       "file_num               772372\n",
       "Name: 123456, Length: 16, dtype: object"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.iloc[123456]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可能会想到一些方法来对这些数据进行切片和切块，以提取有关捐赠者和竞选捐款模式的信息。我将向您展示适用于本书中技术的多种不同分析。\n",
    "\n",
    "您可以看到数据中没有任何政党从属关系，因此添加该字段将很有用。您可以使用“唯一”获取所有唯一政治候选人的列表："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Bachmann, Michelle', 'Romney, Mitt', 'Obama, Barack',\n",
       "       \"Roemer, Charles E. 'Buddy' III\", 'Pawlenty, Timothy',\n",
       "       'Johnson, Gary Earl', 'Paul, Ron', 'Santorum, Rick',\n",
       "       'Cain, Herman', 'Gingrich, Newt', 'McCotter, Thaddeus G',\n",
       "       'Huntsman, Jon', 'Perry, Rick'], dtype=object)"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_cards = fec.cand_nm.unique()\n",
    "\n",
    "unique_cards"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Obama, Barack'"
      ]
     },
     "execution_count": 233,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_cards[2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "指示政党隶属关系的一种方法是使用dict："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [],
   "source": [
    "parties = {'Bachmann, Michelle': 'Republican',\n",
    "           'Cain, Herman': 'Republican',\n",
    "           'Gingrich, Newt': 'Republican',\n",
    "           'Huntsman, Jon': 'Republican',\n",
    "           'Johnson, Gary Earl': 'Republican',\n",
    "           'McCotter, Thaddeus G': 'Republican',\n",
    "           'Obama, Barack': 'Democrat',\n",
    "           'Paul, Ron': 'Republican',\n",
    "           'Pawlenty, Timothy': 'Republican',\n",
    "           'Perry, Rick': 'Republican',\n",
    "           \"Roemer, Charles E. 'Buddy' III\": 'Republican',\n",
    "           'Romney, Mitt': 'Republican',\n",
    "           'Santorum, Rick': 'Republican'\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，使用此映射和Series对象上的map方法，您可以根据候选名称计算政党数组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "123456    Obama, Barack\n",
       "123457    Obama, Barack\n",
       "123458    Obama, Barack\n",
       "123459    Obama, Barack\n",
       "123460    Obama, Barack\n",
       "Name: cand_nm, dtype: object"
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.cand_nm[123456:123461]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "123456    Democrat\n",
       "123457    Democrat\n",
       "123458    Democrat\n",
       "123459    Democrat\n",
       "123460    Democrat\n",
       "Name: cand_nm, dtype: object"
      ]
     },
     "execution_count": 237,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.cand_nm[123456:123461].map(parties)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [],
   "source": [
    "fec['party'] = fec.cand_nm.map(parties)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Democrat      593746\n",
       "Republican    407985\n",
       "Name: party, dtype: int64"
      ]
     },
     "execution_count": 239,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec['party'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "几个数据准备点。首先，此数据包括捐款和退款（负捐款金额）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True     991475\n",
       "False     10256\n",
       "Name: contb_receipt_amt, dtype: int64"
      ]
     },
     "execution_count": 240,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(fec.contb_receipt_amt > 0).value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了简化分析，我将数据集限制为正贡献："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [],
   "source": [
    "fec = fec[fec.contb_receipt_amt > 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于巴拉克·奥巴马（Barack Obama）和米特·罗姆尼（Mitt Romney）是主要的两个候选人，因此我还将准备一个对他们的竞选活动有贡献的子集："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [],
   "source": [
    "fec_mrbo = fec[fec.cand_nm.isin(['Obama, Barack', 'Romney, Mitt'])]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 按职业和雇主的捐赠统计\n",
    "\n",
    "职业捐款是经常研究的统计数据。例如，律师（律师）倾向于向民主党人捐款，而企业高管倾向于向共和党人捐款。你没有理由相信我。您可以在数据中看到自己。首先，按职业划分的捐赠总数很容易："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RETIRED                                   233990\n",
       "INFORMATION REQUESTED                      35107\n",
       "ATTORNEY                                   34286\n",
       "HOMEMAKER                                  29931\n",
       "PHYSICIAN                                  23432\n",
       "INFORMATION REQUESTED PER BEST EFFORTS     21138\n",
       "ENGINEER                                   14334\n",
       "TEACHER                                    13990\n",
       "CONSULTANT                                 13273\n",
       "PROFESSOR                                  12555\n",
       "Name: contbr_occupation, dtype: int64"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.contbr_occupation.value_counts()[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过查看职业，您会发现很多职业都指的是相同的基本工作类型，或者同一事物有多种变体。以下代码段说明了一种通过从一个职业映射到另一个职业来清除其中一些的技术。注意使用dict.get允许没有映射的职业“通过”的“技巧”："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "metadata": {},
   "outputs": [],
   "source": [
    "occ_mapping = {\n",
    "    'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',\n",
    "    'INFORMATION REQUESTED' : 'NOT PROVIDED',\n",
    "    'INFORMATION REQUESTED (BEST EFFORTS)' : 'NOT PROVIDED',\n",
    "    'C.E.O.': 'CEO'\n",
    "}\n",
    "\n",
    "# if no mapping provided, return x\n",
    "f = lambda x: occ_mapping.get(x, x)\n",
    "fec.contbr_occupation = fec.contbr_occupation.map(f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我还将为雇主做同样的事情："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [],
   "source": [
    "emp_mapping = {\n",
    "    'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',\n",
    "    'INFORMATION REQUESTED' : 'NOT PROVIDED',\n",
    "    'SELF' : 'SELF-EMPLOYED',\n",
    "    'SELF EMPLOYED' : 'SELF-EMPLOYED',\n",
    "}\n",
    "\n",
    "# if no mapping provided, return x\n",
    "f = lambda x: emp_mapping.get(x, x)\n",
    "fec.contbr_employer = fec.contbr_employer.map(f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，您可以使用pivot_table来按参与方和职业汇总数据，然后过滤到总共捐赠至少200万美元的子集："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {},
   "outputs": [],
   "source": [
    "by_occupation = fec.pivot_table('contb_receipt_amt', \n",
    "                                index='contbr_occupation', \n",
    "                                columns='party',\n",
    "                                aggfunc='sum')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {},
   "outputs": [],
   "source": [
    "over_2mm = by_occupation[by_occupation.sum(1) > 2000000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>party</th>\n",
       "      <th>Democrat</th>\n",
       "      <th>Republican</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_occupation</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ATTORNEY</th>\n",
       "      <td>11141982.97</td>\n",
       "      <td>7.477194e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CEO</th>\n",
       "      <td>2074974.79</td>\n",
       "      <td>4.211041e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CONSULTANT</th>\n",
       "      <td>2459912.71</td>\n",
       "      <td>2.544725e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENGINEER</th>\n",
       "      <td>951525.55</td>\n",
       "      <td>1.818374e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EXECUTIVE</th>\n",
       "      <td>1355161.05</td>\n",
       "      <td>4.138850e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PRESIDENT</th>\n",
       "      <td>1878509.95</td>\n",
       "      <td>4.720924e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PROFESSOR</th>\n",
       "      <td>2165071.08</td>\n",
       "      <td>2.967027e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REAL ESTATE</th>\n",
       "      <td>528902.09</td>\n",
       "      <td>1.625902e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RETIRED</th>\n",
       "      <td>25305116.38</td>\n",
       "      <td>2.356124e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SELF-EMPLOYED</th>\n",
       "      <td>672393.40</td>\n",
       "      <td>1.640253e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>17 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "party                 Democrat    Republican\n",
       "contbr_occupation                           \n",
       "ATTORNEY           11141982.97  7.477194e+06\n",
       "CEO                 2074974.79  4.211041e+06\n",
       "CONSULTANT          2459912.71  2.544725e+06\n",
       "ENGINEER             951525.55  1.818374e+06\n",
       "EXECUTIVE           1355161.05  4.138850e+06\n",
       "...                        ...           ...\n",
       "PRESIDENT           1878509.95  4.720924e+06\n",
       "PROFESSOR           2165071.08  2.967027e+05\n",
       "REAL ESTATE          528902.09  1.625902e+06\n",
       "RETIRED            25305116.38  2.356124e+07\n",
       "SELF-EMPLOYED        672393.40  1.640253e+06\n",
       "\n",
       "[17 rows x 2 columns]"
      ]
     },
     "execution_count": 253,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "over_2mm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以条形图的形式更容易以图形方式查看此数据（“ barh”表示水平条形图；请参见图14-12）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff67d026510>"
      ]
     },
     "execution_count": 254,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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xVRWVgKwefNm5s6dy5YtW3j66afZuXMn69evZ+bMmcybNw+AWbNmMWXKFEKhELfeeivFxcUAFBcXM2zYMDZv3symTZvIyMgAYMeOHUyZMoW33nqLnj178vDDD1NeXk4oFOL1118nFApRXFxM9+7dWbNmDWvWrGm270HJRGwNB064e8171t29Aviwvspm9nVgAPBQreIHgXwz69OcgYqIiIjIhXF3AFatWsWyZcvIycnh6quvprq6ml27dgFQUFBAWloaycnJ9OnTh1GjRgGQmZlJVVUVAOvWrWPixIkATJ48mTfffBOA1157jaKiIiA8ZyM1NTx4pWfPngwaNKgmjueee468vDxyc3PZunUr27Zta/4PH9CcidjqD2xsYF8fM6uotf0DoAtQ4e6nzhS6+6mgXgbwbt2TmFkhUAiQdGlXeh1/Ilaxx10k4xVFREREWoP33nuPpKQkunXrhrszb948Ro8efVadtWvXkpycXLPdoUOHmu0OHTpw8uTJes8dHuzSsM6dO9esV1ZWMmfOHDZs2ECXLl2YNm0ax48fj/ZjNZl6JlpO3WFOvwUM8HrqNlSOuy9y93x3z0/6kqZWiIiIiLS0Tz75hNtvv51Zs2ZhZowePZqFCxdy4sQJAHbu3Mkf//jHiM93zTXXUFZWBsDy5csZOnQoACNHjmThwoUAnDp1isOHD59z7OHDh+ncuTOpqans27ePlStX1uy75JJLOHLkSNSfMxLqmYitrcD4JtbPNbMO7n4awMw6ANnA9maIT0RERESicOzYMXJycmoeDTt58mR++MMfAjBz5kyqqqrIy8vD3enatSsvvfRSxOcuLS1l+vTpPProo3Tt2pUnngiPPJk7dy6FhYUsWbKEpKQkFi5cSFpa2lnHZmdnk5ubS0ZGBr1792bIkCE1+woLC7n++utJS0trtnkTdmasl1y4YAL274FfuvvioKwA+BKwwN3713PMi4SHOj0YbP8UyHb37zV2veS0vp429bFYfoS40jAnERERqc/27dtJT0+PdxjtQn3ftZltdPf8+uprmFMMeTgzuwm4LnjM61ZgNrCXYM5EraU4OGwG0M/MdpvZu0C/oExEREREpFXTMKcYc/e9wM317EppoP5BYFI018r8Wirl+m2+iIiIiMSJeiZERERERCQqSiZERERERCQqSiZERERERCQqSiZERERERCQq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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "over_2mm.plot(kind='barh', figsize=(12,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "您可能对捐赠给奥巴马和罗姆尼的顶尖捐助者职业或顶尖公司感兴趣。为此，您可以按候选人姓名分组，并使用本章前面的top方法的变体："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_top_amounts(group, key, n=5):\n",
    "    totals = group.groupby(key)['contb_receipt_amt'].sum()\n",
    "    return totals.nlargest(n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后按职业和雇主进行汇总："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = fec_mrbo.groupby('cand_nm')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cand_nm        contbr_occupation    \n",
       "Obama, Barack  RETIRED                  25305116.38\n",
       "               ATTORNEY                 11141982.97\n",
       "               INFORMATION REQUESTED     4866973.96\n",
       "               HOMEMAKER                 4248875.80\n",
       "               PHYSICIAN                 3735124.94\n",
       "                                           ...     \n",
       "Romney, Mitt   HOMEMAKER                 8147446.22\n",
       "               ATTORNEY                  5364718.82\n",
       "               PRESIDENT                 2491244.89\n",
       "               EXECUTIVE                 2300947.03\n",
       "               C.E.O.                    1968386.11\n",
       "Name: contb_receipt_amt, Length: 14, dtype: float64"
      ]
     },
     "execution_count": 263,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.apply(get_top_amounts, 'contbr_occupation', n=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cand_nm        contbr_employer      \n",
       "Obama, Barack  RETIRED                  22694358.85\n",
       "               SELF-EMPLOYED            17080985.96\n",
       "               NOT EMPLOYED              8586308.70\n",
       "               INFORMATION REQUESTED     5053480.37\n",
       "               HOMEMAKER                 2605408.54\n",
       "                                           ...     \n",
       "Romney, Mitt   CREDIT SUISSE              281150.00\n",
       "               MORGAN STANLEY             267266.00\n",
       "               GOLDMAN SACH & CO.         238250.00\n",
       "               BARCLAYS CAPITAL           162750.00\n",
       "               H.I.G. CAPITAL             139500.00\n",
       "Name: contb_receipt_amt, Length: 20, dtype: float64"
      ]
     },
     "execution_count": 264,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.apply(get_top_amounts, 'contbr_employer', n=10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 捐赠金额分桶\n",
    "\n",
    "分析此数据的一种有用方法是使用cut函数按贡献大小将贡献者数量离散化为存储桶："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [],
   "source": [
    "bins = np.array([0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = pd.cut(fec_mrbo.contb_receipt_amt, bins)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "411         (10, 100]\n",
       "412       (100, 1000]\n",
       "413       (100, 1000]\n",
       "414         (10, 100]\n",
       "415         (10, 100]\n",
       "             ...     \n",
       "701381      (10, 100]\n",
       "701382    (100, 1000]\n",
       "701383        (1, 10]\n",
       "701384      (10, 100]\n",
       "701385    (100, 1000]\n",
       "Name: contb_receipt_amt, Length: 694282, dtype: category\n",
       "Categories (8, interval[int64]): [(0, 1] < (1, 10] < (10, 100] < (100, 1000] < (1000, 10000] < (10000, 100000] < (100000, 1000000] < (1000000, 10000000]]"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，我们可以按名称和bin标签将奥巴马和罗姆尼的数据分组，以按捐赠规模获得直方图："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = fec_mrbo.groupby(['cand_nm', labels])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contb_receipt_amt</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>(0, 1]</th>\n",
       "      <td>493</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1, 10]</th>\n",
       "      <td>40070</td>\n",
       "      <td>3681</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10, 100]</th>\n",
       "      <td>372280</td>\n",
       "      <td>31853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100, 1000]</th>\n",
       "      <td>153991</td>\n",
       "      <td>43357</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000, 10000]</th>\n",
       "      <td>22284</td>\n",
       "      <td>26186</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10000, 100000]</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100000, 1000000]</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000000, 10000000]</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm              Obama, Barack  Romney, Mitt\n",
       "contb_receipt_amt                               \n",
       "(0, 1]                         493            77\n",
       "(1, 10]                      40070          3681\n",
       "(10, 100]                   372280         31853\n",
       "(100, 1000]                 153991         43357\n",
       "(1000, 10000]                22284         26186\n",
       "(10000, 100000]                  2             1\n",
       "(100000, 1000000]                3             0\n",
       "(1000000, 10000000]              4             0"
      ]
     },
     "execution_count": 269,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.size().unstack(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "该数据表明，与罗姆尼相比，奥巴马获得的小额捐款数量要多得多。 您还可以将捐款金额相加并在存储桶中进行归一化，以按候选人显示每种规模的总捐款百分比（图14-13显示了结果图）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [],
   "source": [
    "bucket_sums = grouped.contb_receipt_amt.sum().unstack(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {},
   "outputs": [],
   "source": [
    "normed_sums = bucket_sums.div(bucket_sums.sum(axis=1), axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contb_receipt_amt</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>(0, 1]</th>\n",
       "      <td>0.805182</td>\n",
       "      <td>0.194818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1, 10]</th>\n",
       "      <td>0.918767</td>\n",
       "      <td>0.081233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10, 100]</th>\n",
       "      <td>0.910769</td>\n",
       "      <td>0.089231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100, 1000]</th>\n",
       "      <td>0.710176</td>\n",
       "      <td>0.289824</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000, 10000]</th>\n",
       "      <td>0.447326</td>\n",
       "      <td>0.552674</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10000, 100000]</th>\n",
       "      <td>0.823120</td>\n",
       "      <td>0.176880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100000, 1000000]</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000000, 10000000]</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm              Obama, Barack  Romney, Mitt\n",
       "contb_receipt_amt                               \n",
       "(0, 1]                    0.805182      0.194818\n",
       "(1, 10]                   0.918767      0.081233\n",
       "(10, 100]                 0.910769      0.089231\n",
       "(100, 1000]               0.710176      0.289824\n",
       "(1000, 10000]             0.447326      0.552674\n",
       "(10000, 100000]           0.823120      0.176880\n",
       "(100000, 1000000]         1.000000           NaN\n",
       "(1000000, 10000000]       1.000000           NaN"
      ]
     },
     "execution_count": 280,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normed_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7ff67cee51d0>"
      ]
     },
     "execution_count": 283,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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0UUXMWPGDF599VUAli1bxqRJk9h111358pe/vH7bo48+mnHjxrHHHntw6aWXrm/fdtttOfPMMxk3bhwHHXQQDz74IBMmTGCnnXbipptuAmDp0qW85z3vYezYsYwdO5b77ruvprr/8Ic/MHDgwKpq+dKXvsS+++7L/fffz7nnnsv48eN517vexdSpU2l+udLixYs56KCD2GuvvRg7diy//vUbX+b50EMPMWbMGJYsWVJTna2p5fL9WcApwKPAJ4AfA9/tcAWSJEndzOOPP864cePe0Na/f3/e+ta3snjxYgAefPBBHnvsMfr168f48eM57LDDaGxsZMaMGQwaNIhVq1Yxfvx4PvCBDzB48GD++Mc/MmHCBL7+9a8zefJkvvjFLzJ79mwWLlzIlClTOPLII9lhhx2YPXs2ffv2ZdGiRRx//PFU8+bGiRMnkpksWbKEq6++en17W7W8613v4txzzwVg991350tf+hIAJ554IrNmzeKII47ghBNO4KyzzmLy5MmsXr2adevWsWzZMgDuu+8+Pv3pT3PjjTfy1re+tcO/81pC6TbAjMz8b4CIaCjaXu1wFZIkSd1IZhIRbbYffPDBDB48GIBjjjmGe+65h8bGRqZPn87111degrls2TIWLVrE4MGD6d27N5MmTQJg9OjR9OnTh6233prRo0ezdOlSAF5//XU+9alPsWDBAhoaGnjqqaeqqnfOnDkMGTKEX//61xx44IFMmDCBbbfddqO1NDQ08IEPfOAN259//vm8+uqrrFixgj322IMJEybw29/+lsmTJwPQt2/f9f2feOIJpk6dyu23385f/dVf1fKr3ahaQumdwEHAK8XyNsDtwF93SiWSJEndxB577MGPfvSjN7T94Q9/YNmyZey88848/PDDbwqtEcHcuXO54447uP/+++nXrx8TJkxg9erVAGy99dbrt+nVqxd9+vRZ/3nNmjUAXHTRRQwdOpRf/vKXrFu37g1BsBo777wzQ4cOZeHChbz66qsbraVv3740NDQAsHr1ak499VTmzZvHjjvuyLRp01i9evX6S/itGTZsGKtXr2b+/PmdFkpruae0b2Y2B1KKz/06pQpJkqRu5MADD+TVV1/liiuuACqTgf7xH/+Rk046iX79KvFn9uzZrFixglWrVnHDDTfwN3/zN6xcuZKBAwfSr18/nnzySR544IGajrty5UqGDRtGr169uPLKK98wCemd73xnu9s/99xzPP3007ztbW+rupbmoDpkyBBeeeUVrr32WqByu8KIESO44YbKE0Bfe+219ffTbr/99txyyy388z//M3Pnzq3pO25MLSOlf4yIsZn5C4CIGAes6pQqJEmS2lDNI5w6U0Rw/fXXc+qpp/KVr3yFdevW8bd/+7f867/+6/o+7373uznxxBNZvHgxH/nIR2hsbGT06NF85zvfYc8992TXXXdlv/32q+m4p556Kh/4wAe45pprmDhxIn/xF38BwPPPP9/myOXEiRNpaGjg9ddf57zzzmPo0KFMmjSpqlq23357Pv7xjzN69GhGjhzJ+PHj16+78sor+cQnPsGXvvQltt56a6655pr164YOHcrNN9/M+9//fmbMmMG+++5b03fdULT1Bd/QMWI8MBN4pmgaBhyXmQ93qAJ1SGNjY1ZzA7QkST3JE088wW677VZ2Gd3GrFmzWLJkSc2PeypTa+cwIh7OzMbW+lc9UpqZD0XEO4FdgQCezMzXO1KsJEmS2nf44YeXXULd1fKa0X7AmcDpmfkoMDIiNv/fkCRJkuqulolO3wf+BOxfLDcBX+30iiRJkrTFqSWU7pyZ5wOvA2TmKiqX8SVJkqQOqSWU/ikitqF4331E7Ay8VpeqJEmStEWp5ZFQ5wC3AjtGxP8AfwOcVI+iJEmStGWpKpRG5fUDTwLHAPtRuWx/emY+X8faJEmSKqYN6OT9rWy3S0NDA6NHj2bNmjWMGjWKK6+8ku23375z66iTkSNHsuOOO3L33Xevb9t7771Zs2YNjz32GPPmzeOKK65g+vTpzJ07l969e/PXf115SecNN9zAO97xDnbfffcurbmqy/dZeZjpDZn5QmbekpmzDKSSJGlzts0227BgwQIee+wxBg0axCWXXFJ2STV5+eWXWbZsGVB5ZmhLjY2NTJ8+HYC5c+dy3333rV93ww03sHDhwq4rtFDL5fsHImJ8Zj5Ut2pUu2fmd/6/HstUxb9cJUnqavvvvz+PPPIIAJnJ5z//eX7yk58QEXzxi1/kuOOOY+7cuZxzzjkMHTqUBQsWcMwxxzB69Gi++c1vrn8V6c4778xJJ51E//79mTdvHr/73e84//zzOfbYYwG44IILuPrqq3nttdeYPHkyX/7yl/mXf/kXhgwZwumnnw7A2WefzdChQ9t9kP6HPvQhrrrqKj73uc/xwx/+kOOPP54rr7wSqATRCy+8kIsvvpjvfOc7NDQ08IMf/IBvfvOb3HTTTdx111189atf5Uc/+hE777xzHX+zf1bLRKeJwP0R8euIeCQiHo2IR+pVmCRJUnewdu1a7rzzTo488kgArrvuOhYsWMAvf/lL7rjjDv7pn/6J5cuXA/DLX/6Sb37zmzz66KNceeWVPPXUUzz44IN87GMf41vf+tb6fS5fvpx77rmHWbNmcdZZZwFw++23s2jRIh588EEWLFjAww8/zM9+9jNOOeUULr/8cgDWrVvHzJkzOeGEE9qt+9hjj+W6664D4Oabb+aII454U5+RI0fyD//wD3z2s59lwYIFvPe97+XII4/kggsuYMGCBV0WSKG2kdL3t7UyIgZm5osdrEeSJKlbWLVqFXvvvTdLly5l3LhxHHzwwQDcc889HH/88TQ0NDB06FDe+9738tBDD9G/f3/Gjx/PsGHDANh555055JBDABg9ejRz5sxZv++jjz6aXr16sfvuu/Pss88ClVB6++23M2bMGABeeeUVFi1axAEHHMDgwYOZP38+zz77LGPGjGHw4MHt1j9o0CAGDhzIzJkz2W233ejXr1+n/n46Wy2vGf1NO13uBMZ2rBxJkqTuofme0pUrV3L44YdzySWX8JnPfIbKVJvW9enTZ/3nXr16rV/u1asXa9asabVf8/4yky984Qt84hOfeNN+P/axj3HZZZfxu9/9jpNPPrnq73Dcccdx2mmncdlll1W9TVlquXzfHh+kL0mSNjsDBgxg+vTpXHjhhbz++usccMABXHXVVaxdu5bf//73/OxnP2Offfbp8HEOPfRQZsyYwSuvvALAb3/7W5577jkAJk+ezK233spDDz3EoYceun6bd77znW3uc/LkyXz+859/wzYb2m677Xj55Zc3utxVarl8356N/7NBkiSpI0qeCDtmzBj22msvZs6cyUc/+lHuv/9+9tprLyKC888/n7/8y7/kySef7NAxDjnkEJ544gn237/yRvdtt92WH/zgB+ywww707t2biRMnsv3229PQ0ADA888/3+aoLVQC5plnntlmnyOOOIJjjz2WG2+8kW9961t8+MMf5uMf/zjTp0/n2muv7bL7SqO9L1P1jiJ+kZlevu9ijX/VkPOmblt2GZ3H2feSJCqPMNptt93KLqPbWLduHWPHjuWaa65hl112AWDWrFksWbKk3Vn4ZWntHEbEw5nZ2Fr/zhwp9fK9JElSJ1u4cCGHH344kydPXh9IAQ4//PASq+p8NYXSiBgLvJvKpfp7M/MXLVYf2JmFSZIkCXbffXeWLFlSdhl1V/VEp4j4EnA5MBgYAnw/Ir7YvD4zV3R+eZIkaUvVWbcYquttyrmrZaT0eGBMZq4GiIjzgF8AX635qJIkSW3o27cvL7zwAoMHDybCOwR7kszkhRdeoG/fvjVtV0soXQr0BVYXy32AX9d0tG4iIrYBbgXel5lrI+JWYD/gnsw8vEW/UaYzVXsAAA5MSURBVMBMYBCVAH5iZv6pjf0OBq4FxgOXZeanWqwbB1wGbAP8GDg9MzMiBgFXASOp/I4/lJkvRsRxwNeAJ1vWJEnSlmDEiBE0NTXx+9//vuxStAn69u3LiBEjatqm3VAaEd+icg/pa8DjETG7WD4YuGcT6uwOTgauy8y1xfIFQD9gw6fVfh24KDNnRsR3gFOAb7ex39XAvwDvKn5a+jYwFXiASiidBPwEOAu4MzPPi4iziuUzM/OqiHgW+NwmfkdJknqsrbfemlGjRpVdhrpQNfeUzgMeBq4H/hmYA8wFzqYSrnqiE4Abmxcy807gDU+Jjcq1gvdRGfmEyv20R7e108z8Y2bew59Hk5v3NQzon5n3Z+Umiyta7OuoYt9VHUOSJGlz1O5IaWZeDhARp2fmN1uui4jT61VYvUREb2CnzFzaTtfBwEuZ2fxOsCZg+CYednixfbOW+xqamcsBMnN5ROzQ3s4iYiqVUVca+r+Fkau/v4lldUNn3VJ2BZIkbdaWnndY2SW0qpbXjE5ppe2kTqqjKw0BXqqiX2t3VW/qNMDO3BeZeWlmNmZmY0O/AZu6G0mSpG6jmntKjwc+AoyKiJtarNoOeKFehdXRKioTttrzPLB9RGxVjJaOAJ7ZxGM2Fds3a7mvZyNiWDFKOgx4bhOPIUmS1GNVM/v+PmA5lRHGb7Rofxl4pB5F1VMxs70hIvo2P95qI/0yIuYAx1KZgT+F4j7UiJgM7JOZX6jymMsj4uWI2A/4OfB3wLeK1TcV+z6v5TEkSZK2JNXcU/ob4DfA/vUvp8vcTuXNVHcARMTdwDuBbSOiCTglM28DzgRmRsRXgfnA94rtdwb+0NqOI2Ip0B/oHRFHA4dk5kLgk/z5kVA/KX6gEkavjohTgP8DPtip31SSJKkHqPo5pRFxDJVHJO1A5R7JoDKg2L9OtdXTxcAZFKE0M9/TWqfMXALs08qqvYHPbmSbkRtpn8ebHxNFZr6Ar2iVJElbuFomOp0PHJmZAzKzf2Zu10MDKZk5H5gTEQ2buP1HM7OuT/MtHp7/n8CL9TyOJElSd1DLG52ezcwn6lZJF8vMGWXX0JbMvIrKm54kSZI2e7WE0nkRcRVwA5W3OwGQmdd1elWSJEnaotQSSvsDrwKHtGhLwFAqSZKkDqk6lGbm39ezEEmSJG25qp7oFBEjIuL6iHguIp6NiB9FxIj2t5QkSZLaVsvs++9TedD7X1F5b/vNRZskSZLUIZFZ3SvYI2JBZu7dXpu6VmNjY86bN6/sMiRJktoVEQ9nZmNr62oZKX0+Ij5avKKzISI+CrzQOSVKkiRpS1ZLKD0Z+BDwO2A5lXfCO/lJkiRJHVbLI6G+AkzJzBcBImIQcCGVsCpJkiRtslpGSvdsDqQAmbkCGNP5JUmSJGlLU0so7RURA5sXipHSWkZaJUmSpFbVEiq/AdwXEddSeZPTh4Cv1aUqSZIkbVFqeaPTFRExD3gfEMAxmbmwbpVJkiRpi1HT5fcihBpEJUmS1KlquadUkiRJqgtDqSRJkkpnKJUkSVLpDKWSJEkqnaFUkiRJpTOUSpIkqXSGUkmSJJXOUCpJkqTSGUolSZJUOkOpJEmSSmcolSRJUukMpZIkSSqdoVSSJEmlM5RKkiSpdIZSSZIklc5QKkmSpNIZSiVJklQ6Q6kkSZJKZyiVJElS6bYquwB10DPzYdqAsqvYNNNWll2BJEnqJhwplSRJUukMpZIkSSqdoVSSJEmlM5RKkiSpdIZSSZIklc5QKkmSpNIZSiVJklQ6Q6kkSZJKZyiVJElS6QylkiRJKp2htAoRsU1E3BURDcXyrRHxUkTMqnL7AyLiFxGxJiKO3WDdlIhYVPxMadE+JyJeiYjGzv02kiRJ3Y+htDonA9dl5tpi+QLgxBq2/z/gJOB/WzZGxCDgHGBfYB/gnIgYCJCZE4F5HStbkiSpZ9iq7AJ6iBOAjzQvZOadETGh2o0zcylARKzbYNWhwOzMXFGsnw1MAn7Y1v4iYiowFaCh/1sYufr71ZbSvZx1S9kVSJIkYOl5h5VdgiOl7YmI3sBOzcGykw0HlrVYbira2pSZl2ZmY2Y2NvQbUIeyJEmSupahtH1DgJfqtO9opS3rdCxJkqRuy1DavlVA3zrtuwnYscXyCOCZOh1LkiSp2zKUtiMzXwQaIqLdYBoR/xYRk2vY/W3AIRExsJjgdEjRJkmStEUxlFbnduDdzQsRcTdwDXBgRDRFxKHFqtHA7zbcOCLGR0QT8EHgvyLicYBigtNXgIeKn3ObJz1JkiRtSZx9X52LgTOAOwAy8z0b6bd1Zt6/YWNmPkTl0vybZOYMYEYn1SlJktQjOVJahcycD8xpfnh+G/0ObWt9LSJiDrAT8Hpn7VOSJKm7cqS0SsWIZlceb2JXHk+SJKlMjpRKkiSpdIZSSZIklc5QKkmSpNIZSiVJklQ6Q6kkSZJK5+z7Hm708AHMO++wssuQJEnqEEdKJUmSVDpDqSRJkkpnKJUkSVLpDKWSJEkqnaFUkiRJpTOUSpIkqXSGUkmSJJXOUCpJkqTSGUolSZJUOkOpJEmSSmcolSRJUukMpZIkSSqdoVSSJEmlM5RKkiSpdIZSSZIklc5QKkmSpNIZSiVJklQ6Q6kkSZJKZyiVJElS6QylkiRJKp2hVJIkSaUzlEqSJKl0hlJJkiSVzlAqSZKk0hlKJUmSVDpDqSRJkkq3VdkFqIOemQ/TBpRdhTpi2sqyK5AkqXSOlEqSJKl0hlJJkiSVzlAqSZKk0hlKJUmSVDpDqSRJkkpnKJUkSVLpDKWSJEkqnaFUkiRJpTOUSpIkqXSGUkmSJJXOUNoBEbFNRNwVEQ3F8pSIWFT8TKli+w9GxOMRsS4iGlu0vyciFkbEY/WsX5IkqbswlHbMycB1mbk2IgYB5wD7AvsA50TEwHa2fww4BvhZy8bMvBv42zrUK0mS1C0ZSjvmBODG4vOhwOzMXJGZLwKzgUltbZyZT2Tmr+pcoyRJUre3VdkF9FQR0RvYKTOXFk3DgWUtujQVbfU49lRgKkBD/7cwcvX363EYdZWzbim7AknaYi0977CyS1DBkdJNNwR4qcVytNIn63HgzLw0Mxszs7Gh34B6HEKSJKlLGUo33Sqgb4vlJmDHFssjgGe6tCJJkqQeylC6iYr7RhsiojmY3gYcEhEDiwlOhxRtRMQVEbFPSaVKkiR1e4bSjrkdeDdAZq4AvgI8VPycW7QB7Aks33DjiJgcEU3A/sAtEXFbl1QtSZLUzTjRqWMuBs4A7gDIzBnAjJYdIqI/sCgzl224cWZeD1zfBXVKkiR1a46UdkBmzgfmND88fyN9/pCZH6xlvxHxHuBm4PkOlihJktQjOFLaQcXoaGfv825gdGfvV5IkqbtypFSSJEmlM5RKkiSpdIZSSZIklc5QKkmSpNIZSiVJklQ6Z9/3cKOHD2DeeYeVXYYkSVKHOFIqSZKk0hlKJUmSVDpDqSRJkkpnKJUkSVLpDKWSJEkqnaFUkiRJpTOUSpIkqXSGUkmSJJXOUCpJkqTSGUolSZJUOkOpJEmSSmcolSRJUukMpZIkSSpdZGbZNagDIuJl4Fdl16FOMwR4vuwi1Ck8l5sXz+fmxfNZnrdl5ltaW7FVV1eiTverzGwsuwh1joiY5/ncPHguNy+ez82L57N78vK9JEmSSmcolSRJUukMpT3fpWUXoE7l+dx8eC43L57PzYvnsxtyopMkSZJK50ipJEmSSmco7SEiYlJE/CoiFkfEWa2s7xMRVxXrfx4RI7u+SlWjinN5RkQsjIhHIuLOiHhbGXWqOu2dzxb9jo2IjAhn/HZj1ZzPiPhQ8Wf08Yj4366uUdWr4u/bt0bEnIiYX/yd+7dl1KkKL9/3ABHRADwFHAw0AQ8Bx2fmwhZ9TgX2zMx/iIgPA5Mz87hSCtZGVXkuJwI/z8xXI+KTwATPZfdUzfks+m0H3AL0Bj6VmfO6ula1r8o/n7sAVwPvy8wXI2KHzHyulILVpirP56XA/Mz8dkTsDvw4M0eWUa8cKe0p9gEWZ+aSzPwTMBM4aoM+RwGXF5+vBQ6MiOjCGlWdds9lZs7JzFeLxQeAEV1co6pXzZ9NgK8A5wOru7I41aya8/lx4JLMfBHAQNqtVXM+E+hffB4APNOF9WkDhtKeYTiwrMVyU9HWap/MXAOsBAZ3SXWqRTXnsqVTgJ/UtSJ1RLvnMyLGADtm5qyuLEybpJo/n+8A3hER90bEAxExqcuqU62qOZ/TgI9GRBPwY+DTXVOaWuMbnXqG1kY8N7zvopo+Kl/V5ykiPgo0Au+ta0XqiDbPZ0T0Ai4CTuqqgtQh1fz53ArYBZhA5SrG3RHxrsx8qc61qXbVnM/jgcsy8xsRsT9wZXE+19W/PG3IkdKeoQnYscXyCN58iWF9n4jYispliBVdUp1qUc25JCIOAs4GjszM17qoNtWuvfO5HfAuYG5ELAX2A25yslO3Ve3ftTdm5uuZ+TTwKyohVd1PNefzFCr3CJOZ9wN9gSFdUp3exFDaMzwE7BIRoyKiN/Bh4KYN+twETCk+Hwv8NJ3F1h21ey6Ly73/RSWQer9a99bm+czMlZk5JDNHFpMnHqByXp3o1D1V83ftDcBEgIgYQuVy/pIurVLVquZ8/h9wIEBE7EYllP6+S6vUeobSHqC4R/RTwG3AE8DVmfl4RJwbEUcW3b4HDI6IxcAZwEYfTaPyVHkuLwC2Ba6JiAURseFfouomqjyf6iGqPJ+3AS9ExEJgDvBPmflCORWrLVWez38EPh4RvwR+CJzkgE55fCSUJEmSSudIqSRJkkpnKJUkSVLpDKWSJEkqnaFUkiRJpTOUSpIkqXSGUkmSJJXOUCpJkqTSGUolSZJUuv8P3BjXMaxlp6gAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "normed_sums[:-2].plot(kind='barh', figsize=(10,6))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我排除了两个最大的箱，因为它们不是个人捐赠的。\n",
    "\n",
    "可以通过许多方式完善和改进此分析。例如，您可以按捐赠者姓名和邮政编码汇总捐赠，以调整捐赠数量少而捐赠数量大或少的捐赠者。我鼓励您自己下载和浏览数据集。\n",
    "\n",
    "### 各州捐款统计\n",
    "\n",
    "按候选人和州汇总数据是一项日常工作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = fec_mrbo.groupby(['cand_nm', 'contbr_st'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {},
   "outputs": [],
   "source": [
    "totals = grouped.contb_receipt_amt.sum().unstack(0).fillna(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {},
   "outputs": [],
   "source": [
    "totals = totals[totals.sum(1) > 100000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_st</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>AK</th>\n",
       "      <td>281840.15</td>\n",
       "      <td>86204.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AL</th>\n",
       "      <td>543123.48</td>\n",
       "      <td>527303.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AR</th>\n",
       "      <td>359247.28</td>\n",
       "      <td>105556.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AZ</th>\n",
       "      <td>1506476.98</td>\n",
       "      <td>1888436.23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CA</th>\n",
       "      <td>23824984.24</td>\n",
       "      <td>11237636.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CO</th>\n",
       "      <td>2132429.49</td>\n",
       "      <td>1506714.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CT</th>\n",
       "      <td>2068291.26</td>\n",
       "      <td>3499475.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DC</th>\n",
       "      <td>4373538.80</td>\n",
       "      <td>1025137.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DE</th>\n",
       "      <td>336669.14</td>\n",
       "      <td>82712.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FL</th>\n",
       "      <td>7318178.58</td>\n",
       "      <td>8338458.81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm    Obama, Barack  Romney, Mitt\n",
       "contbr_st                             \n",
       "AK             281840.15      86204.24\n",
       "AL             543123.48     527303.51\n",
       "AR             359247.28     105556.00\n",
       "AZ            1506476.98    1888436.23\n",
       "CA           23824984.24   11237636.60\n",
       "CO            2132429.49    1506714.12\n",
       "CT            2068291.26    3499475.45\n",
       "DC            4373538.80    1025137.50\n",
       "DE             336669.14      82712.00\n",
       "FL            7318178.58    8338458.81"
      ]
     },
     "execution_count": 288,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "totals[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果将每一行除以总捐款额，则可以按州获得每个候选人的总捐款的相对百分比："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {},
   "outputs": [],
   "source": [
    "percent = totals.div(totals.sum(1), 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_st</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>AK</th>\n",
       "      <td>0.765778</td>\n",
       "      <td>0.234222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AL</th>\n",
       "      <td>0.507390</td>\n",
       "      <td>0.492610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AR</th>\n",
       "      <td>0.772902</td>\n",
       "      <td>0.227098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AZ</th>\n",
       "      <td>0.443745</td>\n",
       "      <td>0.556255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CA</th>\n",
       "      <td>0.679498</td>\n",
       "      <td>0.320502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CO</th>\n",
       "      <td>0.585970</td>\n",
       "      <td>0.414030</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CT</th>\n",
       "      <td>0.371476</td>\n",
       "      <td>0.628524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DC</th>\n",
       "      <td>0.810113</td>\n",
       "      <td>0.189887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DE</th>\n",
       "      <td>0.802776</td>\n",
       "      <td>0.197224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FL</th>\n",
       "      <td>0.467417</td>\n",
       "      <td>0.532583</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm    Obama, Barack  Romney, Mitt\n",
       "contbr_st                             \n",
       "AK              0.765778      0.234222\n",
       "AL              0.507390      0.492610\n",
       "AR              0.772902      0.227098\n",
       "AZ              0.443745      0.556255\n",
       "CA              0.679498      0.320502\n",
       "CO              0.585970      0.414030\n",
       "CT              0.371476      0.628524\n",
       "DC              0.810113      0.189887\n",
       "DE              0.802776      0.197224\n",
       "FL              0.467417      0.532583"
      ]
     },
     "execution_count": 290,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "percent[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 14.6 结论\n",
    "\n",
    "我们已经到了本书主要章节的结尾。我还提供了一些其他内容，您可能会在附录中找到有用的内容。\n",
    "\n",
    "自本书第一版出版以来的五年中，Python已成为一种流行且广泛的数据分析语言。您在这里开发的编程技能将在未来很长一段时间内保持相关性。希望我们探索的编程工具和库在您的工作中对您有帮助。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
